C'è un modo per ottenere un vettore con il nome di tutte le funzioni che si potrebbero usare in R?

StackOverflow https://stackoverflow.com/questions/4267744

  •  28-09-2019
  •  | 
  •  

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.

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top