R의 read.table 및 read.csv 함수는 구분 된 데이터가 포함 된 파일 또는 URL을 구문 분석하고 R 데이터 프레임을 생성하는 데 사용됩니다. 그러나 이미 CSV로 구분 된 데이터 (쉼표와 \ n을 열과 레코드 구분 기호로 사용)가 포함 된 문자 벡터가 있으므로 파일이나 URL에서 읽을 필요가 없습니다. 이 문자 벡터를 먼저 디스크의 파일에 쓰고 다시 읽지 않고 read.table
, read.csv
또는 scan()
으로 전달할 수 있습니까? 디스크에 쓰는 것이 가능하다는 것을 알고 있지만이 불필요한 왕복을 필요로하지 않으며 문자 벡터에서 직접 데이터를 읽을 수있는 솔루션을 찾고 있습니다.문자 벡터에서 CSV 데이터를 구문 분석하여 데이터 프레임을 추출하려면 어떻게해야합니까?
16
A
답변
24
textConnection()을 사용하여 문자 벡터를 read.table()에 전달할 수 있습니다. 예 :
x <- "first,second\nthird,fourth\n"
x1 <- read.table(textConnection(x), sep = ",")
# x1
V1 V2
1 first second
2 third fourth
답변은 R mailing list에 있습니다.
2017 EDIT
7 년 후, 나는 이렇게 그것을 할 아마 것 : neilfws의 대답에
read.table(text = x, sep = ",")
3
사소한 부록. 이 래퍼 함수는 질문자가 데이터 프레임을 제공하는 대신 질문에 원시 데이터를 배치했을 때 stackoverflow에 대한 질문에 대답하는 데 유용합니다.
textToTable <- function(text, ...)
{
dfr <- read.table(tc <- textConnection(text), ...)
close(tc)
dfr
}
textToTable("first,second\nthird,fourth\n", sep = ",")
이 접근법에 대한 한 가지 경고 :'textConnection()'은 행 수가 증가함에 따라 매우 느릴 수 있습니다. 223k 행에서 임시 CSV에 빠르게 쓰고 읽을 수 있습니다. –