根据列名

时间:2017-06-21 01:28:21

标签: r

我使用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

我需要根据列名称在一次迭代中从每个文件中提取数据。我怎样才能做到这一点 ?谢谢!

2 个答案:

答案 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