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