Использование sapply вместо цикла в R - PullRequest
2 голосов
/ 10 марта 2019

У меня есть функция, которая требует 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 Ответ

1 голос
/ 10 марта 2019

Здесь вы можете использовать mapply(), что позволяет вам задавать векторы в качестве аргументов, вы должны превратить вашу матрицу в фрейм данных.

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

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