首页 > 解决方案 > 删除具有正值的列?

问题描述

我有数据:

structure(c(1.44, 0.28, 1.7, 0.4, 0.03, -0.61, 0.33, 
-0.84), .Dim = c(4L, 2L), .Dimnames = list(c("19", 
 "10", "20", "1"), c("A", "B")))

删除所有值为正的列。此处应删除 A。

标签: r

解决方案


使用colSums

df[, colSums(df < 0) > 0, drop = FALSE]

#      B
#19  0.03
#10 -0.61
#20  0.33
#1  -0.84

或使用apply

df[, apply(df < 0, 2, any), drop = FALSE]

如果将数据转换为数据框,还可以使用:

Filter(function(x) any(x < 0),  as.data.frame(df))

或与dplyr

as.data.frame(df) %>% select_if(~any(. < 0))

推荐阅读