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

Posted

技术标签:

【中文标题】如何从字符向量中解析 CSV 数据以提取数据框?【英文标题】:How can I parse CSV data from a character vector to extract a data frame? 【发布时间】:2011-03-16 17:17:24 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您可以使用 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 = ",")

【讨论】:

关于这种方法的一个警告:textConnection() 随着行数的增加可能会非常慢。在 223k 行中,我发现写入临时 CSV 并读取它更快。:(【参考方案2】:

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

textToTable <- function(text, ...)

   dfr <- read.table(tc <- textConnection(text), ...)
   close(tc)
   dfr

有用法,例如

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

【讨论】:

以上是关于如何从字符向量中解析 CSV 数据以提取数据框?的主要内容,如果未能解决你的问题,请参考以下文章

从列表中提取向量到数据框列[重复]

在 Pandas 数据框中提取嵌入为字符串的嵌套 JSON

如何使用 Papa Parse 从 CSV 文件中提取数据到 React 状态?

如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?

使用 $ 和字符值动态选择数据框列

使用 $ 和字符值动态选择数据框列