我想从数据框中过滤掉所有具有负值的变量。我使用这行代码(下面)来获取列的名称但是如何将正数列保存为新数据框
dat <- read.table(text = " value jobs chairs tables lamps vases
-1 0 0 0 7 9
2 0 0 1 1 6
-3 0 1 0 3 5
4 0 1 1 7 8
-5 1 0 0 5 4
-6 1 0 1 1 3
7 1 1 0 0 7
8 1 1 1 6 6
9 0 0 0 8 9 ", header = TRUE)
names(dat)[sapply(dat, function(x) min(x))>=0]
[1] "value" "jobs" "chairs" "tables" "lamps" "vases"
答案 0 :(得分:3)
使用您检索到的名称对数据框进行分组:
myNames<-names(dat)[sapply(dat, function(x) min(x))>=0]
dat[,myNames]
编辑:如果您不需要这些名称以供日后使用:
dat[,sapply(dat, min)>=0]
答案 1 :(得分:1)
或
dat[, sapply(dat, FUN = function(x) all(x >= 0))]
或
dat[, sapply(dat, FUN = function(x) !any(x < 0))]