我使用list.file来读取名为“matrices”的文件夹中的许多文件
data <- list.files(path="/home/rania/Downloads/matrices/", full.names=TRUE, pattern="\\.csv") %>% lapply(read.csv, header=TRUE, sep=",")
当我写data
时,结果如下:
> data
[[1]]
X25 X14 X14.1
1 4 145 58
2 3 4 5
3 10 11 12
4 14 12 17
5 12 2 8
6 8 2 8
7 7 47 55
8 15 12 18
9 17 12 18
10 14 22 47
11 17 12 75
12 23 77 14
13 12 23 17
[[2]]
X58 X14 X87
1 69 14 20
2 6 8 95
3 13 14 15
4 10 11 14
5 4 1 1
6 7 6 7
7 66 75 8
8 19 13 17
9 89 55 23
10 45 58 58
11 12 32 74
12 12 74 25
13 23 12 28
[[3]]
X63 X21 X87
1 87 23 88
2 20 12 47
3 16 17 18
4 15 10 17
5 8 4 8
6 5 2 6
7 74 85 66
8 19 15 13
9 47 22 54
10 47 77 12
11 15 17 85
12 12 33 45
13 23 47 58
[[4]]
X10 X23 X15
1 11 23 23
2 12 87 17
3 19 12 11
4 19 66 12
5 2 12 77
6 7 88 12
7 45 95 32
8 17 21 78
9 19 12 11
10 12 13 77
11 21 47 13
12 74 12 25
13 1 52 7
我需要根据列名称在一次迭代中从每个文件中提取数据。我怎样才能做到这一点 ?谢谢!
答案 0 :(得分:1)
我们可以使用Map
do.call(cbind, Map(`[`, data, c("X25", "X14", "X21", "X23")))
# X25 X14 X21 X23
#1 4 14 23 23
#2 3 8 12 87
#3 10 14 17 12
#4 14 11 10 66
#5 12 1 4 12
#6 8 6 2 88
#7 7 75 85 95
#8 15 13 15 21
#9 17 55 22 12
#10 14 58 77 13
#11 17 32 17 47
#12 23 74 33 12
#13 12 12 47 52
答案 1 :(得分:-1)
谢谢@RoyalTS它的工作原理
> do.call(cbind, Map(`[`, data, c("X25", "X14", "X21", "X23")))
X25 X14 X21 X23
1 4 14 23 23
2 3 8 12 87
3 10 14 17 12
4 14 11 10 66
5 12 1 4 12
6 8 6 2 88
7 7 75 85 95
8 15 13 15 21
9 17 55 22 12
10 14 58 77 13
11 17 32 17 47
12 23 74 33 12
13 12 12 47 52