programing

텍스트 파일을 단일 문자열로 가져오기

lastmoon 2023. 6. 26. 21:35
반응형

텍스트 파일을 단일 문자열로 가져오기

R에서 일반 텍스트 파일을 단일 문자열로 가져오려면 어떻게 해야 합니까?제 생각에 이것은 매우 간단한 답이 될 것 같습니다만, 제가 오늘 이것을 시도해 보니 이것을 할 수 있는 기능을 찾을 수 없었습니다.

예를 들어 파일이 있다고 가정합니다.foo.txt문자 메시지를 보내고 싶은 것과 함께.

사용해 보았습니다.

scan("foo.txt", what="character", sep=NULL)

하지만 이것은 여전히 벡터를 반환했습니다.다음과 같은 기능을 어느 정도 사용할 수 있습니다.

paste(scan("foo.txt", what="character", sep=" "),collapse=" ")

하지만 그것은 아마도 불안정한 꽤 추악한 해결책일 것입니다.

다음은 하드 코딩된 크기 대신 올바른 크기를 사용하는 @JoshuaUlrich의 다양한 솔루션입니다.

fileName <- 'foo.txt'
readChar(fileName, file.info(fileName)$size)

readChar는 지정한 바이트 수에 공간을 할당합니다.readChar(fileName, .Machine$integer.max)잘 작동하지 않습니다...

3년 후에도 이 질문을 보는 사람이 있을 경우 해들리 위컴의 독자 패키지는 유용한 정보를 가지고 있습니다.read_file()당신을 위해 이것을 해줄 기능.

# you only need to do this one time on your system
install.packages("readr")
library(readr)
mystring <- read_file("path/to/myfile.txt")

저는 다음을 사용합니다.그것은 잘 작동할 것이고 적어도 나에게는 추하게 보이지 않을 것입니다.

singleString <- paste(readLines("foo.txt"), collapse=" ")

어때요?

string <- readChar("foo.txt",nchars=1e6)

리더 패키지는 당신을 위해 모든 것을 해주는 기능이 있습니다.

install.packages("readr") # you only need to do this one time on your system
library(readr)
mystring <- read_file("path/to/myfile.txt")

이렇게 하면 패키지 문자열의 버전이 바뀝니다.

Sharon의 솔루션이 더 이상 사용될 수 없다는 것은 유감입니다.저는 조쉬 오브라이언의 솔루션을 시에이라의 수정과 함께 추가했습니다.Rprofile 파일:

read.text = function(pathname)
{
    return (paste(readLines(pathname), collapse="\n"))
}

다음과 같이 사용합니다.txt = read.text('path/to/my/file.txt')저는 범킨의 발견을 복제할 수 없었습니다. (14년 10월 14일.writeLines(txt)의 내용을 보여주었습니다.file.txt또한, 그 후에write(txt, '/tmp/out')사령부diff /tmp/out path/to/my/file.txt차이가 없는 것으로 보고되었습니다.

readChar는 유연성이 별로 없어서 당신의 솔루션을 결합했습니다(readLines and paste).

각 줄 사이에 공백도 추가했습니다.

con <- file("/Users/YourtextFile.txt", "r", blocking = FALSE)
singleString <- readLines(con) # empty
singleString <- paste(singleString, sep = " ", collapse = " ")
close(con)

당신의 해결책은 별로 나쁘지 않은 것 같습니다.이런 식으로 기능을 사용해서 전문적으로 만들 수 있습니다.

  • 첫 번째 방법
new.function <- function(filename){
  readChar(filename, file.info(filename)$size)
}

new.function('foo.txt')
  • 제2의 방법
new.function <- function(){
  filename <- 'foo.txt'
  return (readChar(filename, file.info(filename)$size))
}

new.function()

언급URL : https://stackoverflow.com/questions/9068397/import-text-file-as-single-character-string

반응형