Ich möchte alle Funktionen in meinem aktuellen Arbeitsbereich finden und über die Verwendung is.function
für diesen Zweck gedacht.Suche nach allen Funktionen im aktuellen Arbeitsbereich
Das „Problem“ ist, dass is.function
erwartet eine echte R Objekt, nicht die Zeichenfolge Name eines Objekts.
Das ist meine Lösung, aber mit eval(substitute(...))
scheint ein bisschen beteiligt. Irgendwelche Ideen für einen geradlinigeren Weg oder ist das der einzige Weg, dies zu tun?
Beispiel Inhalt
x <- TRUE
y <- 10
foo1 <- function() message("hello world!")
foo2 <- function() message("hello world again!")
alle Funktion Objekte finden
wscontent <- ls(all.names=TRUE)
funs <- sapply(wscontent, function(ii) {
eval(substitute(is.function(OBJ), list(OBJ=as.name(ii))))
})
> funs
foo1 foo2 funs wscontent x y
TRUE TRUE FALSE FALSE FALSE FALSE
+1 für den Zeiger auf 'lsf.str()', wusste das vorher nicht! Dieser scheint mir genau das zu erreichen, was ich mit einem Einzeiler anstrebe: 'funs <- as.character (lsf.str())'. Danke vielmals! – Rappster
@Rappster, abhängig davon, was Sie mit dem Ergebnis tun möchten, ist die Verwendung von 'as.character' möglicherweise nicht notwendig, da' lsf.str' im Wesentlichen einen Zeichenvektor von Funktionsnamen zurückgibt. Es ist nur, dass das Objekt der Klasse "ls_str" ist, für die es eine 'print' Methode gibt. – BenBarnes
Großartig, danke für diesen Kommentar. – Rappster