在R中使用sapply而不是loop

时间:2019-03-10 15:01:31

标签: r loops sapply

我有一个需要4个参数的函数:

myFun <- function(a,b,c,d){}

我有一个矩阵,其中每一行都包含参数:

myMatrix = matrix(c(a1,a2,b1,b2,c1,c2,d1,d2), nrow=2, ncol=4)

当前,我有一个循环将参数输入到myFun:

m <- myMatrix
i <- 1
someVector <- c()
while (i<(length(m[,1])+1)){
    someVector[i] <- 
    myFun(m[i,1],m[i,2],m[i,3],m[i,4])
    i = i+1
}
print(someVector)

我想知道的是,有一种更好的方法使用sapply而不是循环来获得相同的结果。

1 个答案:

答案 0 :(得分:1)

您可以在此处使用mapply(),以便为它提供矢量作为参数,您应该将矩阵变成数据框。

df <- as.data.frame(myMatrix))

results <- mapply(myFun, df$a, df$b, df$c, df$d)