r - 根据列中的第一个值过滤数据框列表

标签 r

我有一些数据,例子在这里:

 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/

相关文章:

r - R 中的 POSIXct 微秒不一致

r - R中的成对矩阵相关性 - 如何遍历所有对?

r - Shiny 中 highcharter 的重音字符编码问题

r - 外部函数调用中的 NA/NaN/Inf (arg 6)

r - 在 R 中使用嵌套 for 循环创建数据框

r - 从二元相似度矩阵生成(重叠)相互相似的元素集

RStudio knitr 主题

oop - 什么是S1和S2类?

r - 如何列出R中所有唯一的数据点对的列表?

sql - 与 R 中的 SQL 'WHERE' 子句类似的函数