R:适用于矩阵利润率指数

R:适用于矩阵利润率指数,r,R,我有矩阵m: m = matrix(nrow=3, ncol=2) 还有一些函数f: f = function(row_index, col_index) {row_index + col_index} 如何将f应用于所有行和列索引?如果我这样做: 然后用m(NA)的值调用f,我希望用索引调用它(1,2表示列,1,2,3表示行)。通过这个例子,我应该得到: 2 3 3 4 4 5 背景: 我想比较两个列表中元素的所有成对组合,因此我的函数看起来不像这样: f = function(row,

我有矩阵
m

m = matrix(nrow=3, ncol=2)
还有一些函数
f

f = function(row_index, col_index) {row_index + col_index}
如何将
f
应用于所有行和列索引?如果我这样做:

然后用
m
NA
)的值调用
f
,我希望用索引调用它(1,2表示列,1,2,3表示行)。通过这个例子,我应该得到:

2 3
3 4
4 5
背景:

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

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

如果函数已矢量化,则可以使用

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

g如果函数是矢量化的,则可以使用

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

g您是尝试应用于所有行和列,还是按列应用?如果是后者,则使用
MARGIN=1
。然后,
row\u index
col\u index
将分别成为矩阵中的第一个和第二个元素。您是尝试应用于所有行和列,还是按列应用?如果是后者,则使用
MARGIN=1
。然后,
行索引
列索引
将分别是矩阵中的第一个和第二个元素。