【发布时间】:2018-07-15 21:44:46
【问题描述】:
我可以通过两个动作完成我的子集化,但想学习如何在一个动作中完成。
我想保留所有行并排除所有为 NA 的列并排除所有为零的行。
例子:
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)))]
我不知道如何使用子集来调用具有这些值的所有列,只是具有特定值的列。
【问题讨论】:
-
@braaterAfrikaaner:关注问题的内容并提供有用的贡献。我有目的地选择了这个词。此版本不再表明我在发帖前已尽职尽责,这通常是关闭线程或向画廊征求刻薄、无益的 cmets 的原因。
-
我的编辑得到了两位版主的批准,确认它是有用的。说您阅读了其他问题本身并不表明您已尽职尽责,即这句话并没有降低您的问题被关闭的可能性。如果您可以为您阅读的内容提供更多颜色以及为什么它没有帮助,这只会很有用。如有疑问,请简明扼要。