J'ai un dataframe avec plusieurs colonnes. Pour chaque ligne de la trame de données, je souhaite 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 ce testFunc aux colonnes x et z. Donc, pour la ligne 1, je veux 1 + 5, et pour la ligne 2, je veux 2 + 6. Y a-t-il un moyen de faire cela sans écrire une boucle for, peut-être avec la famille de fonctions apply?
J'ai essayé ceci:
> 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 vous avez une erreur, des idées?
EDIT: la fonction réelle que je veux appeler n'est pas une simple somme, mais c'est power.t.test. J'ai utilisé a + b juste à titre d'exemple. Le but final est de pouvoir faire quelque chose comme ça (é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 power.t.test pour chaque ligne de df.
dplyr
chemin.