Desidero condividere alcuni software come pacchetto ma alcuni dei miei script non sembrano funzionare in modo molto naturale come funzioni. Ad esempio, considera il seguente blocco di codice in cui "raw.df" è un frame di dati contenente variabili di tipi sia discreti che continui. Le funzioni 'count.unique' e 'squash' saranno definite nel pacchetto. Lo script divide il frame dei dati in due frame, 'cat.df' per essere trattato come dati categoriali e 'cts.df' per essere trattato come dati continui.Includere gli script R nei pacchetti R
La mia idea di come questo sarebbe usato è che l'utente avrebbe letto nel frame dati 'raw.df', fonte lo script, quindi modifica interattivamente 'cat.df' e 'cts.df', magari combinando un po ' categorie e trasformando alcune variabili.
dcutoff <- 9
tail(raw.df)
(nvals <- apply(raw.df, 2, count.unique))
p <- dim(raw.df)[2]
(catvar <- (1:p)[nvals <= dcutoff])
p.cat <- length(catvar)
(ctsvar <- (1:p)[nvals > dcutoff])
p.cts <- length(ctsvar)
cat.df <- raw.df[ ,catvar]
for (i in 1:p.cat) cat.df[ ,i] <- squash(cat.df[ ,i])
head(cat.df)
for(i in 1:p.cat) {
cat(as.vector(table(cat.df[ ,i])), "\n")
}
cts.df <- raw.df[ ,ctsvar]
for(i in 1:p.cts) {
cat(quantile(cts.df[ ,i], probs = seq(0, 1, 0.1)), "\n")
}
Ora, questo potrebbe, naturalmente, essere trasformato in una funzione che restituisce una lista contenente nvals, p, p.cat, cat.df, ecc; comunque questo mi sembra piuttosto brutto. Tuttavia, l'unica possibilità di includere script in un pacchetto sembra essere la cartella "demo" che non sembra essere la strada giusta da percorrere. Consigli su come procedere sarebbero stati ricevuti con gratitudine.
(Ma la gratitudine non essere espressa formalmente come sembra che l'uso di un commento per esprimere il ringraziamento è deprecato.)
Io uso 'inst/scripts /', ma anche rendere il file un vero e proprio (eseguibile) via rscript o più piccolo. –
Perché la funzione che restituisce quelle quantità ti sembra brutta? È perché non sarebbe stampato nello stesso modo in cui lo hai nella sceneggiatura? Potresti creare la tua funzione di stampa personalizzata per fare quella parte ... – Dason
Dirk: conosci un pacchetto che utilizza questo approccio? –