R:适用于矩阵边距指数

时间:2013-08-06 07:53:35

标签: r

我有矩阵m

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

和一些函数f

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

如何将f应用于所有row和col 索引?如果我做apply

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

然后使用fm)的值调用NA,我希望使用索引调用它(对于col为1,2,对于col为1,2,3为行)。通过这个例子,我应该得到:

2 3
3 4
4 5

背景

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

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

1 个答案:

答案 0 :(得分:4)

如果您的功能是矢量化的,则可以使用rowcol

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) )