28

众所周知,如果列维或行维为 1,R 会尝试将矩阵简化为向量。使用该drop=F命令可以防止这种自动删除维数。

但是,我目前正在编写一个大型 R 包,并且需要在我的代码中禁用数百次降维,因此我必须手动找到这些位置并添加drop=F 数百次。

因此,我想知道是否有任何选项或可能性通常禁用 R 中矩阵的降维?

4

1 回答 1

28

您可以通过重新定义[函数来做到这一点:

x <- matrix(1:4,2)

`[` <- function(...) base::`[`(...,drop=FALSE)
x[,1]
     [,1]
[1,]    1
[2,]    2

但是,当您现在调用它时,您无法覆盖该drop参数,因此您可能希望谨慎使用它并在完成后删除它。

于 2012-08-30T13:50:28.597 回答