Sto cercando di utilizzare la funzione R-Markdown in R Studio in cui stavo cercando di stampare grafici generati all'interno di una funzione. Questo è un tipico esempio di cosa sto cercando di fare.Stampa di grafici generati in una funzione utilizzando R Markdown in RStudio
**Test printing plots generated in a function**
================================================
``` {r fig.width=8, fig.height=4, warning=FALSE, eval=TRUE, message=FALSE, tidy=TRUE, dev='png', echo=FALSE, fig.show='hold', fig.align='center'}
dat <- data.frame(x=c(1:10),y=c(11:20),z=c(21:30),name=rep(c("a","b"),each=5))
library(ggplot2)
ex <- function(data){
plot(data[,1],data[,2])
plot(data[,1],data[,3])
}
for (i in 1:10){
t1 <- rbind(i,ex(dat))
}
t1
```
Coloro testare questo codice, si prega di accertarsi di salvarlo come file ".RMD" e quindi eseguire il knithtml() nella barra degli strumenti RStudio. Questo codice sopra funziona perfettamente con il tipo di output html che desidero. Tuttavia, quando sostituisco la funzione di tracciamento di base con il codice basato su ggplot, non riesco a ottenere lo knithtml() per produrre l'output ggplot dei 10 grafici che ho ottenuto prima. Il codice di trama di base sopra è ora sostituito dal seguente codice
p1 <- ggplot(data=data, aes(x=data[,1],y=data[,2]))
p1 <- p1+geom_point()
p1
Mi manca qualcosa di molto semplice qui.
VJ
cosa succede se si ha fatto una trama sfaccettata e maglia che? –
No! Finché è all'interno della funzione, non viene stampato. Inoltre, ho appena provato che qplot() produce l'output desiderato mentre ggplot no. Non posso stampare un oggetto ggplot generato all'interno di una funzione, al di fuori di un altro utilizzando ggsave() per salvarlo come pdf ad es. –
All'interno dell'istruzione 'for' o in una funzione, è necessario l'oggetto' print' ggplot2 esplicitamente, quindi prova 'print (p1)'. – kohske