J'ai un cadre de données avec plusieurs colonnes. Pour chaque ligne du cadre de données, je veux appeler une fonction sur la ligne, et l'entrée de la fonction utilise plusieurs colonnes de cette ligne. Par exemple, disons que j'ai ces données et ce testFunc qui accepte deux arguments :
> df <- data.frame(x=c(1,2), y=c(3,4), z=c(5,6))
> df
x y z
1 1 3 5
2 2 4 6
> testFunc <- function(a, b) a + b
Disons que je veux appliquer cette testFunc aux colonnes x et z. Donc, pour la ligne 1, je veux 1+5, et pour la ligne 2, je veux 2 + 6. Existe-t-il un moyen de faire cela sans écrire une boucle for, peut-être avec la famille de fonctions apply ?
J'ai essayé ça :
> df[,c('x','z')]
x z
1 1 5
2 2 6
> lapply(df[,c('x','z')], testFunc)
Error in a + b : 'b' is missing
Mais j'ai eu une erreur, des idées ?
EDITAR: la fonction réelle que je veux appeler n'est pas une simple somme, mais c'est un test de puissance.t. J'ai utilisé a+b juste à titre d'exemple. L'objectif final est de pouvoir faire quelque chose comme ceci (écrit en pseudocode) :
df = data.frame(
delta=c(delta_values),
power=c(power_values),
sig.level=c(sig.level_values)
)
lapply(df, power.t.test(delta_from_each_row_of_df,
power_from_each_row_of_df,
sig.level_from_each_row_of_df
))
où le résultat est un vecteur de sorties pour le test power.t pour chaque ligne de df.