R read.csv 来自内联字符串的数据,带有 csv 文件内容

R read.csv data from inline string with a csv file content

这应该是一件微不足道的事情,但我没有找到任何东西。

我在 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的逐行结构更简单

试试这个

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

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

我们可以使用 fread 会非常快

library(data.table)
fread(txt)
#   var1 var2
#1:    a    1
#2:    b    2

数据

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

tibble package's tribble() 方法是在 R 文件中以人类可读、机器可读且易于 maintain/edit 的方式写入短表格数据的另一种很好的选择.作为奖励,它使得使用 R 表达式作为 table.

中的值变得容易
# 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(...).