按 R 中的列值过滤列表中的每个数据框
Posted
技术标签:
【中文标题】按 R 中的列值过滤列表中的每个数据框【英文标题】:Filter each dataframe in a list by a column value in 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'
如有任何帮助,将不胜感激。
【问题讨论】:
【参考方案1】:filt_datalist = lapply(datalist, function(x)
x[x[, 5] >= 2,]
)
应该是这样的。您获取数据框 (x
) 并过滤第 5 列 (x[, 5]
) 为 >= 2
的所有内容。
【讨论】:
顺便说一句:我会尽量避免x[, 5]
- 如果您知道列名x$columnName
更好,因为感兴趣的列也可能在另一个位置。以上是关于按 R 中的列值过滤列表中的每个数据框的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark:如何将现有非空列的元组列表作为数据框中的列值之一返回