如何从字符向量解析CSV数据以提取数据框?

时间:2010-07-16 00:22:13

标签: r parsing csv dataframe import-from-csv

R中的read.table和read.csv函数用于解析包含分隔数据的文件或URL并生成R数据帧。但是,我已经有一个包含CSV分隔数据的字符向量(使用逗号和\ n作为列和记录分隔符),因此我不需要从文件或URL中读取它。如何将此字符向量传递到read.tableread.csvscan()而不先将其写入磁盘上的文件并将其重新读入?我意识到将它写入磁盘是可能的,但我正在寻找一种不需要这种不必要的往返的解决方案,并且可以直接从字符向量中读取数据。

2 个答案:

答案 0 :(得分:26)

您可以使用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年编辑

七年后,我可能会这样做:

read.table(text = x, sep = ",")

答案 1 :(得分:3)

neilfws回答的一个小补遗。当提问者在他们的问题中放置原始数据而不是提供数据框时,这个包装函数非常适合帮助回答有关stackoverflow的问题。

textToTable <- function(text, ...)
{
   dfr <- read.table(tc <- textConnection(text), ...)
   close(tc)
   dfr
}

使用,例如

textToTable("first,second\nthird,fourth\n", sep = ",")