ho deciso di aggiungi anche questa soluzione perché ho trovato che dput()
non funzionava per quello che stavo cercando di fare. Ho un'applicazione shiny
che utilizza knitr
per creare report basati sulla sessione utente e io uso knit_expand()
prima di mostrare il mio .Rmd per portare i parametri utente dalla sessione lucida al file .Rmd.
Senza entrare troppo nel dettaglio, ho bisogno di portare i vettori "così come sono", perché saranno scritti in righe di codice nel file .Rmd che qualcuno eseguirà. Per questo caso, dput()
non ha funzionato perché l'output è solo sputo alla console e il metodo dump()
funziona ma non ho voluto scrivere ogni volta nuovi file ed eliminarli.
Potrebbe esserci un modo migliore, ma ho scritto una funzione che restituisce un oggetto carattere del vettore "così com'è". Gestisce sia i vettori numerici che i caratteri (getta le virgolette attorno a ciascun membro del vettore dei caratteri). Gestisce anche i singoli input e li restituisce semplicemente così come sono. Non è carino, e sono sicuro che ci sono modi più efficienti per scriverlo, ma funziona perfettamente per i miei bisogni. Ho pensato di aggiungere questa soluzione alla mischia.
printVecAsis <- function(x) {
ifelse(length(x) == 1, x,
ifelse(is.character(x), paste0("c(", paste(sapply(x, function(a) paste0("\'",a,"\'")), collapse=", "), ")"),
paste0("c(", paste(x, collapse=", "), ")")))}
Dai un'occhiata a 'deparse (x)'. –