0

私は行列を持っていますm:

m = matrix(nrow=3, ncol=2)

そしていくつかの機能f

f = function(row_index, col_index) {row_index + col_index}

fすべての行と列のインデックスに適用する方法は? 私が申し込む場合

apply(m, c(1,2), f)

次に( )fの値で呼び出され、インデックス (列の場合は 1,2、行の場合は 1,2,3) で呼び出されるようにします。この例では、次のようになります。mNA

2 3
3 4
4 5

バックグラウンド:

2 つのリストの要素のペアごとの組み合わせをすべて比較したいので、関数は次のようにはなりません。

f = function(row, col) {
  length(setdiff(list_a[[col]], list_b[[row]]))
}
4

1 に答える 1

4

関数がベクトル化されている場合は、 と を使用できrowますcol

f(row(m), col(m))
# For this example, you can also use:
row(m) + col(m)
# [1,]    2    3
# [2,]    3    4
# [3,]    4    5

ベクトル化されていない場合は、 でベクトル化できますがVectorize、行列ではなくベクトルになってしまいます。結果を再形成する必要があります。

g <- Vectorize(f)
matrix( g(row(m), col(m)), nr=nrow(m) )
于 2013-08-06T08:13:54.400 に答える