C'è un modo per ottenere un vettore con il nome di tutte le funzioni che si potrebbero usare in R?
Domanda
Mi piacerebbe avere una chiamata che i rendimenti di me un vettore con i nomi di tutte le funzioni che ho potuto chiamare nella sessione corrente R. Qualcuno sa come raggiungere questo obiettivo?
(Vorrei controllare le variabili immessi dall'utente contro questo vettore. Abbiamo avuto qualche problema imprevisto con gli utenti di entrare per esempio, c
come nomi di variabili)
UPDATE:. Mi piacerebbe ottenere i nomi delle funzioni da tutti i pacchetti attualmente caricati
SOLUZIONE (a metà strada): Sulla base di Joris Meys punta con lsf.str()
Sono venuto con la seguente funzione che restituisce un vettore ordinato con tutti i nomi delle funzioni attualmente disponibili:
getFunctionNames <- function() {
loaded <- (.packages())
loaded <- paste("package:", loaded, sep ="")
return(sort(unlist(lapply(loaded, lsf.str))))
}
Bu, t puoi anche consultare i commenti sul post di Joris Meys' per le risposte ancora migliori.
Soluzione
userei lsf.str()
come un inizio.
es: x <- as.character(lsf.str("package:base"))
fornisce un elenco di tutte le funzioni nel pacchetto base. Si potrebbe fare aggiungere tutti i pacchetti che si desidera controllare contro. stats
e utils
vengono in mente prima.
EDIT: Per quanto riguarda le tue domande su pacchetti attualmente caricati:
x <- non elencati (sapply (search () [- 1], la funzione (x) as.character (lsf.str (x)))) vedere i commenti
pkgs <- search()
pkgs <- pkgs[grep("package:",pkgs)]
y <- unlist(sapply(pkgs,lsf.str))
fa il trucco.
Altri suggerimenti
Ho chiesto un Q simile su R-Aiuto molte lune fa (2007) e il Prof. Brian Ripley a condizione che questa come una soluzione:
findfuns <- function(x) {
if(require(x, character.only=TRUE)) {
env <- paste("package", x, sep=":")
nm <- ls(env, all=TRUE)
nm[unlist(lapply(nm, function(n) exists(n, where=env,
mode="function",
inherits=FALSE)))]
} else character(0)
}
pkgs <- dir(.Library)
z <- lapply(pkgs, findfuns)
names(z) <- pkgs
Z <- sort(unique(unlist(z)))
che fornisce output come:
> head(Z)
[1] "^" "-" "-.Date" "-.POSIXt" ":" "::"
Questo è stato per la ricerca di tutte le funzioni in pacchetti contrassegnati da oggetto pkgs
modo da poter controllare quali pacchetti sono caricati / confrontato.
Una versione che il lavoro sul set attualmente caricata di pacchetti sarebbe modificato:
findfuns2 <- function(pkgs) {
nm <- ls(pkgs, all = TRUE)
nm[unlist(lapply(nm, function(n) exists(n, where = pkgs,
mode = "function",
inherits = FALSE)))]
if(isTRUE(all.equal(length(nm), 0)))
character(0)
else
nm
}
pkgs <- search()
pkgs <- pkgs[grep("package:", pkgs)]
z <- lapply(pkgs, findfuns2)
z <- sort(unique(unlist(z)))
head(z)