0

基本的に、 n x m の任意の行列で動作する関数を作成しようとしており、結果として m の異なる行列が得られるようにする必要があります。関数内で変数を作成するための R の機能はありますか?

4

1 に答える 1

3

以下に例を示します。

set.seed(42)
m <- matrix(rnorm(9),ncol=3)

#            [,1]       [,2]        [,3]
# [1,]  1.3709584  0.6328626  1.51152200
# [2,] -0.5646982  0.4042683 -0.09465904
# [3,]  0.3631284 -0.1061245  2.01842371


fun <- function(mat) {
  result <- list()
  for (i in seq_len(nrow(mat))) {
    result[[i]] <- mat[-i,]
  }
  result
}

mList <- fun(m)

mList[[1]]
#            [,1]       [,2]        [,3]
# [1,] -0.5646982  0.4042683 -0.09465904
# [2,]  0.3631284 -0.1061245  2.01842371

ただし、この関数は教育的な例にすぎないことに注意してください。lapplyまさにこの結果が必要な場合は、おそらく代わりに使用します。しかし、好きなものをリストに入れて、関数がそのリストを返すようにすることができます (変数は同じ型またはクラスである必要はありません)。

于 2013-05-23T10:58:38.507 に答える