首页 > 解决方案 > 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]
}

标签: r

解决方案


我们可以创建一个索引setdiff

j1 <- setdiff(seq_len(ncol(a)), v)

然后是子集'a'

a[, j1, drop = FALSE]

推荐阅读