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)

then使用( )f的值调用,我希望使用索引调用它(col 为 1,2,row 为 1,2,3)。通过这个例子,我应该得到:mNA

2 3
3 4
4 5

背景:

我想比较两个列表元素的所有成对组合,所以我的函数看起来不像这样:

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

1 回答 1

4

如果您的函数是矢量化的,则可以使用rowand 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 回答