2017-07-02 12 views
0

は、私は3つの行列があるとします。rの複数の引数に対して同じ関数を呼び出しますか?

Mat1 = matrix(0,4,4) 
Mat2 = matrix(0,4,4) 
Mat3 = matrix(0,4,4) 

その後、手動でそれを行うことは非常に困難である、私は行列の番号を作成する必要があるとします。また、私はlow.tri(Mat1)を使ってこれらの関数を低三角行列にしたいので、それをeaslyする方法はありますか?

私はlapplyファミリを検索しましたが、私の質問に対する答えが見つかりませんでした。

+1

そして、これらの行列の多数を作成するには、試してみてください。 'lapply(1:_number_of_matrixes_you_want_、機能(x)がマトリックス(0、4,4))' – coffeinjunky

答えて

2

lapplyがリストに使用されます。まず、すべての行列をlistに挿入します。 lower.triは論理関数です。下三角形を取得したい場合は、下にfのような関数を作成する必要があります。そして、あなたがそうのようなlapplyを使用することができます。

Mat1 = matrix(0,4,4) 
Mat2 = matrix(0,4,4) 
Mat3 = matrix(0,4,4) 
l <- list(Mat1,Mat2,Mat3) 

f <- function(m) { 
    m[lower.tri(m)] <- 1 
    m 
} 

lapply(l,f) 

[[1]] 
    [,1] [,2] [,3] [,4] 
[1,] 0 0 0 0 
[2,] 1 0 0 0 
[3,] 1 1 0 0 
[4,] 1 1 1 0 

[[2]] 
    [,1] [,2] [,3] [,4] 
[1,] 0 0 0 0 
[2,] 1 0 0 0 
[3,] 1 1 0 0 
[4,] 1 1 1 0 

[[3]] 
    [,1] [,2] [,3] [,4] 
[1,] 0 0 0 0 
[2,] 1 0 0 0 
[3,] 1 1 0 0 
[4,] 1 1 1 0 
関連する問題