从矩阵
M
,
> (M <- matrix(1:9, 3, 3))
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
c(NA, 0)
,例如。
cv1 <- 1:3
lapply(cv1, function(x) M[, -x])
对于这个案例,我试图添加的列没有要删除的列
NA
0
条件向量,但它不起作用。
cv2 <- c(NA, 1:3)
cv3 <- 0:3
> lapply(cv2, function(x) M[, -x])[[1]]
[1] NA NA NA
> lapply(cv3, function(x) M[, -x])[[1]]
[1,]
[2,]
[3,]
lapply(cv2, function(x) {
if (is.na(x))
M
else
M[, -x]
})
但我想知道是否有更简单的方法。
问题:
首先让我印象深刻的是,在以下情况下,矩阵将消失,而不是保持完整,尽管我实际上试图什么都不删除:
M[, -(na.omit(NA))]
M[, na.omit(-(NA))]
M[, -0]
M[, -logical(0)]
# [1,]
# [2,]
# [3,]
或
> M[, -NULL]
Error in -NULL : invalid argument to unary operator
有人能解释一下这种行为的原因和优点吗,以及/或者如何正确地说出来?