我有一些数据,例子在这里:
dat1 <- data.frame(a = c("5","10","15","20"), b = c("0.1","0.2","0.3","0.4"))
dat2 <- data.frame(a = c("15","20","25","30"), b = c("0.5","0.6","0.7","0.8"))
datalist <-list (dat1,dat2)
给我这样的格式
[[1]]
a b
1 5 0.1
2 10 0.2
3 15 0.3
4 20 0.4
[[2]]
a b
1 15 0.5
2 20 0.6
3 25 0.7
4 30 0.8
我希望能够过滤数据框列表,条件是列的第一个值 a
应该是 <= 10
.因此在这种情况下,输出将只是第一个数据帧 [[1]],而第二个数据帧将被完全忽略。
期望的输出
[[1]]
a b
1 5 0.1
2 10 0.2
3 15 0.3
4 20 0.4
如有任何建议,我们将不胜感激! 谢谢
最佳答案
您可以使用 sapply
获取逻辑向量,指示列表的每个元素是否满足特定条件。然后可以使用 [
以通常的方式将其应用于列表的子集。例如:
datalist[sapply(datalist, function(x){as.numeric(x[[1,"a"]]) <= 10})]
将仅返回示例中的第一个元素。
(注意 as.numeric
是必需的,因为您的数字在这里存储为字符串)
关于r - 根据列中的第一个值过滤数据框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68318844/