使用多个条件在R中使用apply函数对列进行子集
我可以在两个动作中完成我的子集,但我想学习如何在一个动作中完成它。
我希望保留所有行,排除全部为NAs的列,并排除全为零的行。
示例:
x1 <- 1:10
x2 <- round(rnorm(10, mean=3, sd = 1), 0)
x <- cbind(x1, x2, x3 = 0, x4 = NA)
x
x1 x2 x3 x4
1 2 0 NA
2 5 0 NA
3 2 0 NA
4 5 0 NA
5 3 0 NA
6 3 0 NA
7 2 0 NA
8 5 0 NA
9 3 0 NA
10 3 0 NA
xsub <- x[,apply(x, 2, function (x) !all(is.na(x)))] #excludes cols with all NAs
xsub <- xsub[,apply(xsub, 2, function(x) !all(x==0))] #excludes cols with all zeros
我尝试在函数语句中使用|(或),但没有任何反应。语法错误?也只是在学习函数。
xsub <- x[,apply(x, 2, function(x) !all(x==0) | !all(is.na(x)))]
我不知道如何使用subset来调用具有这些值的所有列,只调用具有特定值的列。
转载请注明出处:http://www.intsu.net/article/20230429/2503256.html