r删除索引为空的列

时间:2018-12-17 14:55:01

标签: r

我们都知道如何使用列索引向量从矩阵中排除列:

v=c(1,3)
a = matrix(rnorm(12),nrow=3)
a[,-v]

但是当索引向量为空时,返回矩阵为空:

v = numeric()
a[,-v]
# returns matrix with 0 columns

当排除的一组列索引为空时,如何使返回的矩阵成为原始矩阵?

肯定有比使用繁琐的if else更好的方法:

if (length(v)==0) {
    b = a
} else {
    b = a[,-v]
}

2 个答案:

答案 0 :(得分:1)

我们可以使用j1 <- setdiff(seq_len(ncol(a)), v)

创建索引
a[, j1, drop = FALSE]

,然后是子集“ a”

00120181120xyz12341
00220180203abc56792
00320181203pqr25483 

答案 1 :(得分:0)

重新排列上一个命令,您应该会很好