6

設定したい

byrow=TRUE

のデフォルトの動作として

matrix()

Rで機能します。これを行う方法はありますか?

4

1 に答える 1

13

formals<-置換機能を使用できます。

しかし、最初にmatrix()新しい関数にコピーすることをお勧めします。そうすれば、それを使用する他の関数を台無しにしたり、仮引数の変更によって R に混乱を引き起こしたりすることはありません。ここで私はそれを呼びますmyMatrix()

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

Nowは、引数 (そしてもちろん環境)を除いて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
于 2015-01-17T01:43:58.303 に答える