Tôi đang cố gắng sử dụng tính năng R-Markdown trong R Studio nơi tôi đang cố gắng in các ô được tạo bên trong một hàm. Đây là một ví dụ chạy xuống cơ bản về những gì tôi đang cố gắng làm.Các ô in được tạo trong một hàm bằng cách sử dụng R Markdown trong 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
```
Những thử nghiệm mã này, hãy chắc chắn để lưu nó dưới dạng file ".Rmd" và sau đó chạy knithtml() trong thanh công cụ RStudio. Đoạn mã trên hoạt động hoàn toàn tốt với loại đầu ra html mà tôi mong muốn. Tuy nhiên, khi tôi thay thế hàm vẽ nền bằng mã dựa trên ggplot, tôi không thể nhận được knithtml() để tạo ra đầu ra ggplot của 10 ô mà tôi đã có trước đây. Mã lô cốt cơ bản ở trên bây giờ được thay thế bằng mã sau đây
p1 <- ggplot(data=data, aes(x=data[,1],y=data[,2]))
p1 <- p1+geom_point()
p1
Tôi thiếu cái gì đó rất đơn giản ở đây.
VJ
gì nếu bạn đã thực hiện một âm mưu diện và đan đó? –
Không! Miễn là nó nằm bên trong hàm, nó không được in. Ngoài ra, tôi vừa thử nghiệm qplot() tạo ra kết quả mong muốn trong khi ggplot thì không. Tôi không thể in một đối tượng ggplot được tạo bên trong một hàm, bên ngoài khác bằng cách sử dụng ggsave() để lưu nó dưới dạng pdf ví dụ: –
Bên trong câu lệnh 'for' hoặc trong một hàm, bạn cần đối tượng' print' ggplot2 rõ ràng, vì vậy hãy thử 'print (p1)'. – kohske