R语言如何筛选满足max()>=1条件的多列?附实操示例
实现方法
你已经拿到了符合筛选条件的布尔索引向量,只需要用这个向量筛选数据框的对应列即可。另外注意:你需求是筛选列最大值≥1的列,当前用colSums()判断列和的逻辑和需求不一致,仅在当前示例中刚好得到了正确的布尔结果,实际使用建议按最大值判断。
1. dplyr 管道流写法(tidyverse风格)
library(dplyr) # 按列最大值≥1筛选,符合你的需求 result <- y %>% select(where(~ max(.) >= 1))
如果确实要沿用你原来的列和≥1的判断逻辑,写法为:
result <- y %>% select(where(~ sum(.) >= 1))
2. 基础R写法
# 按列最大值≥1筛选 col_keep <- apply(y, 2, function(x) max(x) >= 1) result <- y[, col_keep] # 按列和≥1筛选(对应你原来的判断逻辑) result <- y[, colSums(y) >= 1]
输出结果
以上代码运行后都可以得到你需要的输出:
rv1 rv4 rv5 1 0 0 0 2 1 0 0 3 0 0 3 4 0 0 1 5 0 1 0
内容的提问来源于stack exchange,提问作者cnauber
相关产品推荐
相关产品推荐

