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
。然后,行索引
和列索引
将分别是矩阵中的第一个和第二个元素。