在R中使用sapply而不是loop

问题描述 投票:2回答:1

我有一个需要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而不是循环来获得相同的结果。

r loops sapply
1个回答
1
投票

您可以在这里使用mapply(),它允许您将向量作为参数,您应该将矩阵转换为数据帧。

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

results <- mapply(myFun, df$a, df$b, df$c, df$d)
© www.soinside.com 2019 - 2024. All rights reserved.