2015-08-15 25 views
7

Desidero stampare la documentazione per un pacchetto R sulla console. FacendoStampa indice funzione pacchetto R sulla console

utils:::.getHelpFile(help("print")) 

funziona bene, ma quando provo

utils:::.getHelpFile(help(package="MASS")) 

ottengo un errore che indica:

Error in dirname(file) : a character vector argument expected 

Quindi la mia domanda è: come è possibile stampare la documentazione per un pacchetto R (ovvero help(package="package_name")) alla console? Grazie in anticipo.

+0

Si sta richiedendo il sommario (indice) dei file della Guida lì. E 'questo quello che vuoi? –

+0

Ciao @RichardScriven. Sì, l'indice del pacchetto. – petobens

+0

@RichardScriven non fondamentalmente la stessa cosa perché con 'ls()' i) ho bisogno di caricare prima il pacchetto e ii) non ho una breve descrizione di cosa fa la funzione. – petobens

risposta

7

help(package = "MASS") vi porta alla file di INDEX per il pacchetto MASS, aperto in una finestra del browser (a seconda delle impostazioni). Per leggere quel file nella console, possiamo usare system.file() per ottenere il percorso del file, quindi per leggerlo come vettore di caratteri.

## get the complete file path for the index file of the MASS package 
f <- system.file("INDEX", package = "MASS") 
## read it 
readLines(f) 
# [1] "Functions:"         
# [2] "=========" 
# [3] "" 
# [4] "Null     Null Spaces of Matrices" 
# [5] "addterm     Try All One-Term Additions to a Model" 
# [6] "anova.negbin   Likelihood Ratio Tests for Negative Binomial GLMs" 
# ... 
# ... 

Oppure possiamo avvolgerla in cat() per ottenere una versione più pulita

cat(readLines(f), sep = "\n") 
# Functions: 
# ========= 
# 
# Null     Null Spaces of Matrices 
# addterm     Try All One-Term Additions to a Model 
# anova.negbin   Likelihood Ratio Tests for Negative Binomial GLMs 
# ... 
# ... 

In alternativa, si potrebbe ottenere lo stesso risultato con

readLines(file.path(find.package("MASS"), "INDEX")) 

Infine, se vi state chiedendo su i collegamenti alla descrizione del pacchetto e le notizie che appaiono nella parte superiore del browser html, quelli che possono essere ottenuti con

packageDescription("MASS") 
news(package = "MASS") 
+0

'help (pacchetto =" pippo ")' non apre sempre un finestra del browser. Dipende dalle tue impostazioni (vedi l'argomento 'help_type' in'? Help'). Inoltre, non c'è un file "indice" nei pacchetti. Il file è "INDICE", quindi il tuo codice non funzionerà su sistemi in cui i nomi dei file sono case sensitive. –

+0

Grazie a @JoshuaUlrich - Mi chiedevo perché "index" ha funzionato sulla mia macchina e su "INDICE". Grazie per il chiarimento –

3

utils:::.getHelpFile(help(package="MASS")) non funziona perché help(pacakge="MASS") restituisce un oggetto packageInfo classe, non un oggetto help_files_with_topic di classe (che è un percorso completo del file con alcuni altri attributi).

qui è la cosa più semplice che posso venire con:

cat(paste(format(help(package="MASS", help_type="text")), collapse="\n"),"\n") 

In sostanza, si format l'uscita dal . Quindi lo paste che si traduce in una singola stringa di caratteri, collassata insieme da una nuova riga. Quindi chiama cat per quel risultato.

Problemi correlati