Mi piacerebbe trovare tutte le funzioni nel mio spazio di lavoro corrente e ho pensato di utilizzare is.function
per questo scopo.Trovare tutte le funzioni nello spazio di lavoro corrente
Il "problema" è che is.function
si aspetta una vera e propria R oggetto, non la stringa di caratteri nome di un oggetto.
Questa è la mia soluzione, ma l'utilizzo di eval(substitute(...))
sembra un po 'complicato. Qualche idea per un modo più diretto o è l'unico modo in cui questo può essere fatto?
contenuti Esempio
x <- TRUE
y <- 10
foo1 <- function() message("hello world!")
foo2 <- function() message("hello world again!")
Trovare tutte le funzioni oggetti
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 per il puntatore a 'lsf.str()', non lo sapeva prima! Questo mi sembra esattamente quello che sto cercando con un solo liner: 'funs <- as.character (lsf.str())'. Molte grazie! – Rappster
@Rappster, a seconda di cosa si vuole fare con il risultato, usare 'as.character' potrebbe non essere necessario, dato che' lsf.str' restituisce essenzialmente un vettore di caratteri di nomi di funzioni. È solo che l'oggetto è di classe 'ls_str', per cui esiste un metodo' print'. – BenBarnes
Grande, grazie per quel commento. – Rappster