我有一个功能
function (x, y) { ... }
Run Code Online (Sandbox Code Playgroud)
它需要两个向量x并y返回一个从它们计算出来的值。
我想将此函数成对地应用于两个矩阵xs和的列向量ys。从R 中,迭代我找到的矩阵的行向量,mapply()但这似乎将函数成对地应用于矩阵的每个元素。相反,我想将该函数应用于整个列。我该怎么做呢?
为了澄清起见,这是一个人为的例子:
xs <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, ncol = 2)
ys <- matrix(c(25, 26, 27, 28, 29, 30), nrow = 3, ncol = 2)
dot <- function(x, y) sum(x*y)
Run Code Online (Sandbox Code Playgroud)
这是一种方法:
xs <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, ncol = 2)
ys <- matrix(c(25, 26, 27, 28, 29, 30), nrow = 3, ncol = 2)
dot <- function(x, y) {
sum(x*y)
}
dots <- sapply(1:ncol(xs),function(i) dot(xs[,i],ys[,i])) #dots = c(158, 437)
Run Code Online (Sandbox Code Playgroud)