Применить список из n функций к каждой строке фрейма данных?

У меня есть список функций

funs <- list(fn1 = function(x) x^2,
             fn2 = function(x) x^3,               
             fn3 = function(x) sin(x),
             fn4 = function(x) x+1)
#in reality these are all f = splinefun()

И у меня есть фрейм данных:

mydata <- data.frame(x1 = c(1, 2, 3, 2),
                     x2 = c(3, 2, 1, 0),
                     x3 = c(1, 2, 2, 3),
                     x4 = c(1, 2, 1, 2))
#actually a 500x15 dataframe of 500 samples from 15 parameters

Для каждой из i строк я хотел бы оценить функцию j в каждом из столбцов j и просуммируйте результаты:

unlist(funs)
attach(mydata)
a <- rep(NA,4)
for (i in 1:4) {
     a[i] <- sum(fn1(x1[i]), fn2(x2[i]), fn3(x3[i]), fn4(x4[i]))
}

Как я могу сделать это эффективно? Это подходящий повод для реализации функций plyr ? Если да, то как?

бонусный вопрос: почему [4] NA ?

Подходящее время для использования функций из plyr , если да , как это сделать?

11
задан Abe 22 January 2011 в 19:10
поделиться