R 用多重和可变滤波器计数数据

R 用多重和可变滤波器计数数据,r,filter,R,Filter,我有一个带有多列的数据帧df。我想计算满足一定数量不等式的值。对于两个给定变量,我将使用: res <- sum(df$column1 > x1 & df$column2 > x2) resx1&df$column2>x2) 但是,我希望它更灵活,采用可变数量的列名称和关联值,如: columns <- c("column1", "column2", ..., "columnn") values <- c(x1, x2, ..., xn) res <

我有一个带有多列的数据帧df。我想计算满足一定数量不等式的值。对于两个给定变量,我将使用:

res <- sum(df$column1 > x1 & df$column2 > x2)
resx1&df$column2>x2)
但是,我希望它更灵活,采用可变数量的列名称和关联值,如:

columns <- c("column1", "column2", ..., "columnn")
values <- c(x1, x2, ..., xn)
res <- sum(df$column1 > x1 & df$column2 > x2 & ... & df$columnn > xn)
列(xn)

如何使用标准数据帧技术有效地实现这种变量过滤?(Dplyr语法很好,但在我的数据库中通常太慢)

假设每个“值”元素对应于“df”中的一列,将相应的列、元素与
Map
进行比较,
减少为单个
逻辑
向量,并获得

sum(Reduce("&", Map(">", df[columns], values)))

或者复制“值”以获得与数据集列相同的长度,进行比较,获得逻辑
矩阵的
行和
,检查它是否等于“列”的
长度
,并获得逻辑
向量的

sum(rowSums(df[columns] > rep(values, each = length(columns))) == length(columns))

假设每个“值”元素对应于“df”中的一列,将相应的列、元素与
Map
进行比较,
减少为单个
逻辑
向量,并获得

sum(Reduce("&", Map(">", df[columns], values)))

或者复制“值”以获得与数据集列相同的长度,进行比较,获得逻辑
矩阵的
行和
,检查它是否等于“列”的
长度
,并获得逻辑
向量的

sum(rowSums(df[columns] > rep(values, each = length(columns))) == length(columns))