【问题标题】:Filter each dataframe in a list by a column value in R按 R 中的列值过滤列表中的每个数据框
【发布时间】:2020-01-30 10:32:03
【问题描述】:

我有一个包含 18 个数据框的列表,它们看起来都类似于:

 Gene ID    HMMER   Hotpep  DIAMOND #ofTools
actino_5_2__00070   GT20(2-473) GT20(5) GT20    3
actino_5_2__00270   CE1(65-331) -   -   1
actino_5_2__00610   GT4(224-382)    GT4(7)  GT4 3
actino_5_2__00950   GH3(26-242) GH3(2)  GH3 3
actino_5_2__01300   GH23(67-175)    -   -   1
actino_5_2__01490   GT4(381-524)    GT4(82) GT4 3
actino_5_2__01990   CE1(114-349)    -   -   1

我想过滤列表中的每个数据框,但最后一列的值 >= 2。所以这个filt_comb_data = comb_data[comb_data$X >= 2,] 几乎是一个列表。我首先使用 lapply 和以下内容:

filt_datalist = lapply(datalist, function(x){
  x[x[5],] >= 2
})

但我收到此错误:

Error in `[.default`(xj, i) : invalid subscript type 'list' 

如有任何帮助,将不胜感激。

【问题讨论】:

    标签: r list dataframe


    【解决方案1】:
    filt_datalist = lapply(datalist, function(x){
        x[x[, 5] >= 2,]
    })
    

    应该是这样的。您获取数据框 (x) 并过滤第 5 列 (x[, 5]) 为 >= 2 的所有内容。

    【讨论】:

    • 顺便说一句:我会尽量避免x[, 5] - 如果您知道列名x$columnName 更好,因为感兴趣的列也可能在另一个位置。
    猜你喜欢
    • 1970-01-01
    • 2017-08-15
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 2011-11-14
    • 2018-06-24
    相关资源
    最近更新 更多