17

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

4

2 回答 2

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 邮件列表中找到答案。

2017年编辑

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

read.table(text = x, sep = ",")
于 2010-07-16T01:36:27.187 回答
3

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

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

随着用法,例如

textToTable("first,second\nthird,fourth\n", sep = ",")
于 2010-07-16T11:11:05.483 回答