在 R 中设置函数参数的默认值
Set default values for function parameters in R
我要设置
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
我要设置
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