我想设置

byrow=TRUE

作为默认行为
matrix()

R 中的函数。有没有办法做到这一点?

最佳答案

您可以使用 formals<- 替换功能。

但首先将 matrix() 复制到一个新函数是个好主意,这样我们就不会弄乱使用它的任何其他函数,或者导致 R 任何可能因更改形式参数而导致的困惑。这里我称之为 myMatrix()

myMatrix <- matrix
formals(myMatrix)$byrow <- TRUE
## safety precaution - remove base from myMatrix() and set to global
environment(myMatrix) <- globalenv()

现在 myMatrix()matrix() 相同,除了 byrow 参数(当然还有环境)。
> myMatrix
function (data = NA, nrow = 1, ncol = 1, byrow = TRUE, dimnames = NULL)
{
    if (is.object(data) || !is.atomic(data))
        data <- as.vector(data)
    .Internal(matrix(data, nrow, ncol, byrow, dimnames, missing(nrow),
        missing(ncol)))
}

这是一个测试运行,显示带有默认参数的 matrix(),然后是带有默认参数的 myMatrix()
matrix(1:6, 2)
#      [,1] [,2] [,3]
# [1,]    1    3    5
# [2,]    2    4    6
myMatrix(1:6, 2)
#      [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    4    5    6

10-08 03:10