【发布时间】:2022-10-14 01:35:40
【问题描述】:
我有一个功能
myfunction <- function(x,y){
x+y
}
我想将 x 和 y 向量传递给它并得到一个长度相同的向量,这只是它们元素的总和。
出于某种原因,当我使用
sapply(x,myfunction,y)
我得到一个矩阵而不是一个向量。我究竟做错了什么?我使用了错误的功能吗?
例子:
x = c(1,2,3,4)
y = c(2,4,6,8)
sapply(x,myfunction,y)
> [,1] [,2] [,3] [,4]
[1,] 3 4 5 6
[2,] 5 6 7 8
[3,] 7 8 9 10
[4,] 9 10 11 12
当我想要的输出是一个向量(3,6,9,12)时。
【问题讨论】:
-
您只需要
x + y而不是循环遍历每个元素,即myfunction(x, y)如果您需要使用应用函数,请使用mapply(myfunction, x, y)。sapply循环遍历 'x 的每个元素,并添加 y 的所有元素而不是相应的元素 -
你的
sapply基本上是这样做的:cbind(myfunction(x[1], y), myfunction(x[2], y), myfunction(x[3], y), myfunction(x[4], y))
标签: r