Me gustaría encontrar todas las funciones en mi espacio de trabajo actual y pensé en usar is.function
para tal fin.Encontrar todas las funciones en el área de trabajo actual
El "problema" es que is.function
espera un cierto R objeto, no la cadena de caracteres nombre de un objeto.
Esa es mi solución, pero usar eval(substitute(...))
parece un poco complicado. ¿Alguna idea para una manera más directa o es la única forma en que esto se puede hacer?
Ejemplo contenido
x <- TRUE
y <- 10
foo1 <- function() message("hello world!")
foo2 <- function() message("hello world again!")
Encontrar todos los objetos función
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 para el puntero a 'lsf.str()', ¡no sabía eso antes! Este parece obtener exactamente lo que busco con un solo trazo: 'funs <- as.character (lsf.str())'. ¡Muchas gracias! – Rappster
@Rappster, dependiendo de lo que quiera hacer con el resultado, puede que el uso de 'as.character' no sea necesario, ya que' lsf.str' devuelve esencialmente un vector de caracteres de nombres de funciones. Es solo que el objeto es de clase 'ls_str', para el cual hay un método' print'. – BenBarnes
Genial, gracias por ese comentario. – Rappster