Ich habe einen Datenrahmen mit mehreren Spalten. Für jede Zeile im Datenrahmen möchte ich eine Funktion in der Zeile aufrufen, und die Eingabe der Funktion verwendet mehrere Spalten aus dieser Zeile. Nehmen wir zum Beispiel an, ich habe diese Daten und diese testFunc, die zwei Argumente akzeptiert:
> 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
Angenommen, ich möchte diesen TestFunc auf die Spalten x und z anwenden. Für Zeile 1 möchte ich 1 + 5 und für Zeile 2 möchte ich 2 + 6. Gibt es eine Möglichkeit, dies zu tun, ohne eine for-Schleife zu schreiben, möglicherweise mit der Apply-Funktionsfamilie?
Ich habe es versucht:
> 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
Aber Fehler, irgendwelche Ideen?
BEARBEITEN: Die eigentliche Funktion, die ich aufrufen möchte, ist keine einfache Summe, sondern power.t.test. Ich habe a + b nur zum Beispiel verwendet. Das Endziel ist es, in der Lage zu sein, so etwas zu tun (in Pseudocode geschrieben):
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
))
wobei das Ergebnis ein Vektor von Ausgaben für power.t.test für jede Zeile von df ist.
dplyr
Weg.