【问题标题】:Subsetting in R columns of data frames stored in list based on their indexes stored in another list根据存储在另一个列表中的索引,在列表中存储的数据帧的 R 列中进行子集化
【发布时间】: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


    【解决方案1】:

    我想我找到了解决办法:

    list_new<-list()
    for(i in seq_along(list_df)){
      list_new[[i]]<-list_df[[i]][c(c1_index[[i]]:c4_index[[i]])]
    }
    

    如果有人知道如何以更有效的方式做到这一点,请告诉我

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 1970-01-01
      • 2020-09-02
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      相关资源
      最近更新 更多