从CSV文件内容的内联字符串中读取R read.csv数据

4

这本应该是一件微不足道的事情,但我在谷歌上没有找到任何相关的资料。

我有一个csv文件里面包含以下数据:

test.csv

var1,var2
'a',1
'b',2

使用以下方法将其读入R:

d <- read.csv('test.csv')

有没有一种方法可以在我的 R 代码中插入 csv 文件的内容?类似于:
d <- read.csv(
    'var1,var2\n
    'a',1\n
    'b',2')

(上述语法不起作用)

我怎样才能告诉 R,输入的字符串应该被视为数据本身,而不是包含数据的文件名?

这将用于在 Rmarkdown 中添加小表格,而无需创建大量的辅助文件。

当然,我可以使用相同的信息添加

d <- data.frame(
  var1=c('a','b'),
  var2=1,2
)

但是逐个列举数据向量会减慢进程速度。csv 的逐行结构更容易处理。


谢谢你们两个出色的回答。 - LucasMation
3个回答

8

试试这个

CSV_Text = "var1,var2
'a',1
'b',2"

Dat = read.csv(text=CSV_Text, header=TRUE)

谢谢!:) 这里的关键是 read.table()(以及扩展的 read.csv())的 text 参数。当我查看帮助页面时,我错过了它,因为 read.table() 有太多的参数,而 text 只在列表的末尾! text: 字符串:如果未提供‘file’且存在此项,则通过文本连接从‘text’的值中读取数据。请注意,可以使用文字字符串将(小型)数据集包含在R代码中。 - Aaron Wells

3
我们可以使用fread函数来提高速度。
library(data.table)
fread(txt)
#   var1 var2
#1:    a    1
#2:    b    2

数据

txt = "var1,var2
  a,1
  b,2"

0

tibble包的tribble()方法是在R文件中编写短表格数据的另一个绝佳选择,以一种既可读性高、又易于机器读取和维护/编辑的方式。而且,作为额外的好处,它使得在表格中使用R表达式作为值变得非常容易。

# Column names are prefaced with "~"
my_tibble1 <- tribble(
  ~colA, ~colB, ~colC,
  "a",   1,     10.1,
  "b",   2,     3.4,
  "c",   3,     5.6
)
#> # A tibble: 3 x 3
#>    colA  colB  colC
#>   <chr> <dbl> <dbl>
#> 1     a     1  10.1
#> 2     b     2   3.4
#> 3     c     3   5.6


# tribble will create a list column if the value in any cell is
# not a scalar
my_tibble2 <- tribble(
  ~x,  ~y,
  "a", 1:3,
  "b", 4:6
)
#> # A tibble: 2 x 2
#>       x         y
#>   <chr>    <list>
#> 1     a <int [3]>
#> 2     b <int [3]>

如果你之前没有遇到过tibbles,它们是(大多数情况下)可以替换 data.frame的。如果你确实需要确保你的数据是 data.frame而不是 tibble,你可以使用 as.data.frame(...)进行转换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接