【发布时间】:2019-01-26 08:48:59
【问题描述】:
我是处理存储在列表中的数据帧的新手,我很抱歉,但我有以下问题:
假设我有多个数据帧存储在列表中,我想根据第一列的索引到最后一列的索引对一定数量的列进行子集化,这些列总是与每个数据帧不同。
例子:
df1
c1. c2. c3 c4 c5
1. a. 4. d. 7
2. b. 5. e. 8
3. c. 6. f. 9
df2
c1. c2. c2_1 c3 c3_1 c4 c5
1. a. a1 4 4a d. 7
2. b. b1 5 5a e. 8
3. c. c1 6 6a f. 9
df3
c1. c2. c4 c5
1. a. d. 7
2. b. e. 8
3. c. f. 9
Output df1
df1
c1. c2. c3 c4
1. a. 4. d.
2. b. 5. e.
3. c. 6. f.
Output df2
df2
c1. c2. c2_1 c3 c3_1 c4
1. a. a1 4 4a d.
2. b. b1 5 5a e.
3. c. c1 6 6a f.
Ouput df3
df1
c1. c2. c4 c5
1. a. d. 7
2. b. e. 8
3. c. f. 9
假设我想从列 c1 到列 c4 进行子集化,但是,列 c4 在存储在列表中的所有数据帧中具有不同的索引。
所以,我通过这个循环获得了所有数据帧中所有 c1 列和 c4 列的索引。 数据帧存储在 list_df 中
c1_index<-list()
for(i in seq_along(list_df)){
c1_index[[i]] <-which(colnames(list_df[[i]])== "c1")
}
c4_index<-list()
for(i in seq_along(list_df)){
c4_index[[i]] <-which(colnames(list_df[[i]])== "c4")
}
然后我合并两个列表的开始和结束索引:
c1_c4_index <- mapply(append, c1_index, c4_index, SIMPLIFY = FALSE)
我现在有一个整数列表,其中包含我想要子集的列的索引。
str(c1_c4_index)
List of 3
$ : int 1 4
$ : int 1 6
$ : int 1 3
现在,如何编写一个 for 循环,根据存储在 c1_c4_index 中的索引对 list_df 中所有 df 中的列进行子集化?
我写了这样的东西,但它似乎不起作用:
list_new<-list()
for(i in seq_along(c1_c4_index)){
list_new[[i]]<-list_df[[i]][, list_df[[i]] %in% c1_c4_index[[i]]]
}
非常感谢任何帮助,谢谢
【问题讨论】:
标签: r