Ich habe ein Problem mit der Anwendungsfunktion übergeben Argumente an eine Funktion übergeben, wenn nicht benötigt. Ich verstehe, dass Sie nicht wissen, was Sie mit den optionalen Argumenten machen sollen und übergeben Sie sie einfach an die Funktion.Übergeben Sie nicht alle optionalen Argumente in anwenden
Aber trotzdem, hier ist das, was würde ich tun:
Zuerst habe ich eine Liste von Funktionen angeben möchten, die ich nutzen möchte.
Dann möchte ich eine Funktion erstellen, die diese angegebenen Funktionen auf einen Datensatz anwenden.
myFunc <- function(data, functions) {
for (i in 1:length(functions)) print(apply(X=data, MARGIN=2, FUN=functions[[i]]))
}
Das funktioniert gut.
data <- cbind(rnorm(100), rnorm(100))
myFunc(data, functions)
[1] 100 100
[1] -0.5758939 -5.1311173
Aber ich möchte auch zusätzliche Argumente für einige Funktionen, z.
Die funktionieren nicht wie ich will. Wenn ich ändern myFunc
zu:
myFunc <- function(data, functions, ...) {
for (i in 1:length(functions)) print(apply(X=data, MARGIN=2, FUN=functions[[i]], ...))
}
functions
als
functions <- list(length, sum, power)
und dann meine Funktion versuche ich bekommen
myFunc(data, functions, p=2)
Error in FUN(newX[, i], ...) :
2 arguments passed to 'length' which requires 1
Wie kann ich dieses Problem lösen?
Sorry für die Wand des Textes. Vielen Dank!