Rufen Sie die Funktion apply-like für jede Zeile des Datenrahmens mit mehreren Argumenten aus jeder Zeile auf

Ich habe einen Datenrahmen mit mehreren Spalten. Für jede Zeile im Datenrahmen möchte ich eine Funktion in der Zeile aufrufen, und für die Eingabe der Funktion werden mehrere Spalten aus dieser Zeile verwendet. Nehmen wir zum Beispiel an, ich habe diese Daten und diese Testfunktion, 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. Also, 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, vielleicht 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 Irrtum, irgendwelche Ideen?

BEARBEITEN: Die eigentliche Funktion, die ich aufrufen möchte, ist keine einfache Summe, sondern power.t.test. Ich habe a + b nur zu Beispielzwecken verwendet. Das Endziel ist, in der Lage zu sein, so etwas (in Pseudocode geschrieben) zu tun:

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
))

Dabei ist das Ergebnis ein Vektor der Ausgänge für power.t.test für jede Zeile von df.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage