r - 基于向量过滤数据框的列
问题描述
我有一个包含多列的数据框,我按列计算中值,然后按大于其中值的行进行过滤。我的问题是有一些方法可以创建更短的代码。
注意:我需要的过滤器总是满足 Xi>xi 的条件。
set.seed(123)
df = data.frame(replicate(10,sample(1:10,1000,rep=TRUE)))
x <- sapply(df,median)
library(dplyr)
filter(df, X1 > x[1], X2 > x[2], X3 > x[3], X4 > x[4], X5 > x[5],
X6 > x[6], X7 > x[7], X8 > x[8], X9 > x[9], X10 > x[10])
预期产出
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 8 10 7 9 8 6 10 8 8 9
解决方案
这是一个选项tidyverse
library(tidyverse)
map2(df, x , `>`) %>%
reduce(`&`) %>%
magrittr::extract(df, .,)
# X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
#930 8 10 7 9 8 6 10 8 8 9
推荐阅读
- azure - 在 Azure KeyVault 机密版本上编辑现有标记值
- python - Scrapy spider 在检查所有链接之前提前完成
- python - 如何立即打破while循环
- postgresql - PostgreSQL | 如何在 Sql Inserts 中属性索引更新时间
- ios - 如何将 vararg 参数从 Kotlin 通用代码传递给 iOS 函数?
- c++ - 创建带有和不带有 new 关键字的 C++ 对象
- java - 使用@Min(0) 验证整数遇到 NumberFormatException
- javascript - 如何计算jQuery中的触发器数量
- android - 注释不能用作注释参数
- javascript - 仅从 JavaScript 中的对象数组中获取唯一数据