删除r中矩阵中的每第2列和第5列

删除r中矩阵中的每第2列和第5列,r,R,我正在做一个习题集,要求我从一个非常大的矩阵中删除每2列和每5列 mA = matrix(rnorm(10000), nrow = 100, ncol = 100) 我可以很容易地想出其中一种方法,但我很难想出如何同时做到这两种方法。有人有什么想法吗?使用向量回收你可以做到- result <- mA[, c(TRUE, FALSE, TRUE, TRUE, FALSE)] result使用向量循环可以- result <- mA[, c(TRUE, FALSE, TRUE, T

我正在做一个习题集,要求我从一个非常大的矩阵中删除每2列和每5列

mA = matrix(rnorm(10000), nrow = 100, ncol = 100)

我可以很容易地想出其中一种方法,但我很难想出如何同时做到这两种方法。有人有什么想法吗?

使用向量回收你可以做到-

result <- mA[, c(TRUE, FALSE, TRUE, TRUE, FALSE)]

result使用向量循环可以-

result <- mA[, c(TRUE, FALSE, TRUE, TRUE, FALSE)]
result
mA[,!(seq(ncol(mA))%%2==0 | seq(ncol(mA))%%5==0)]
mA[,!(seq(ncol(mA))%%2==0 | seq(ncol(mA))%%5==0)]
我们也可以这样做

result <- mA[, -unique(unlist(lapply(c(2, 5), function(i) seq(1, ncol(mA), by = i))))]
结果我们也可以

result <- mA[, -unique(unlist(lapply(c(2, 5), function(i) seq(1, ncol(mA), by = i))))]

result这不会删除第4列(每删除第2列一次)。修改似乎有效(出于某种原因,它必须这么长,只是将数字4设为FALSE不起作用):mB=mA[,c(真,假,真,假,假,假,真,假)]这不会删除第4列(每第二列被删除一次)修改似乎是有效的(出于某种原因,它必须这么长,仅仅把数字4放在FALSE不起作用):mB=mA[,c(真,假,真,假,假,真,假,假)]