使用管道将多个文件读入单个列表

时间:2018-11-16 14:09:44

标签: r

我有一些简单的文件,每行只有一个条目,我想将这些文件读入列表,并以文件的内容为矢量。

> list(file_one = c(1,2,3,4), file_two = c(9,99,999))
$file_one
[1] 1 2 3 4

$file_two
[1]   9  99 999

...

这基本上是我想要的结果格式。 到目前为止,我得到的结果是类似的,但不正确:

> list.files("/home/x/y/z", pattern="^rep.*List$", full.names=TRUE) %>% lapply(read.table)

[[1]]
    V1
1   a
2   b
3   c
4   d

如何读取正确格式的数据或从此处转换数据? -最好是我有一条“管道”来读取数据:

  1. 列出文件
  2. 以正确的格式读取文件或
  3. 将读取的数据格式化为命名向量列表

2 个答案:

答案 0 :(得分:1)

也许您需要这样的东西

library(tidyverse)

list.files("xyz/", full.names = TRUE) %>% 
  set_names(basename(.)) %>% 
  map(read_lines)

#> $`rep1List`
#> [1] "a" "b" "c" "d" "e" "f"
#> 
#> $rep2List
#> [1] "e" "f" "g" "h" "i" "j" "k"
#> 
#> $rep3List
#> [1] "l" "m" "m" "o" "p" "q" "r" "s"

每个文件如下所示: img

答案 1 :(得分:0)

根据您提供的信息,我将尝试使用purrr-Package进行以下操作:

list.files("/home/x/y/z", pattern="^rep.*List$", full.names = TRUE) %>% 
  purrr::map_df(., read.table, ADD YOUR ARGUMENTS HERE)

这对我来说是一个真实的例子。它与您的编造文件失败。我本来会发表评论,但我太低了。 ^^