我想使用我的函数test1()
在RMarkdown中获取图表。在函数中,我使用cat()
函数和ggplotly()
,我发现使用cat()
是这种情况的主要问题。当我用cat()
删除所有代码时,我会得到我想要的(test2()
(。 但是对我来说,使用cat()
很重要,因为我可以在test1()
中创建段落和评论。我在test1()
和test_ggplotly中改变了什么灵魂。啪?
test_ggplotly。R
library("ggplot2")
library("plotly")
test1<-function(){
cat('n')
cat("## Chapter 1", "n")
cat("### Example ", "n")
cat(" Comment ", "n")
cat('n')
p1<-ggplot(mpg, aes(x = displ, y = hwy, color = class)) + geom_point()
ggplotly(p1)
cat('n')
}
test2<-function(){
p1<-ggplot(mpg, aes(x = displ, y = hwy, color = class)) + geom_point()
ggplotly(p1)
}
test_ggplotly。马币
---
title: "Test"
author: " "
date: "10/14/2019"
output: html_document
---
``* {r setup, include=FALSE,echo=FALSE}
knitr::opts_chunk$set(echo = TRUE)
``
``{R, echo=FALSE}
source("test_ggplotly.R")
``
``
# Test 1
``{r, results='asis', echo=FALSE}
test1()
``
# Test 2
``{r, results='asis', echo=FALSE}
test2()
``
* should be ```
你需要告诉 R 在test1
函数中返回什么对象:
test1<-function(){
cat('n')
cat("## Chapter 1", "n")
cat("### Example ", "n")
cat(" Comment ", "n")
cat('n')
p1<-ggplot(mpg, aes(x = displ, y = hwy, color = class)) + geom_point()
return( ggplotly(p1) )
cat('n')
}
编辑 16/10/19 : #2 对于 Rmarkdown,我使用列表作为解决方法,这可能是一个特定的问题,以便在这里找到更好的结果。
1 呼召plotly::ggploty()
确实被遗忘了。下面的代码应该显示想要的图表。
让我们重新格式化您的问题:
test1<-function(){
library(ggplot2)
for(i in 1:4){
cat('n')
cat("## Chapter ", i, "n")
cat("### Exampstle ", "n")
cat(" Comment ", "n")
cat('n')
p1 <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
geom_point() +
ggtitle(paste("Chart nr ", i))
return(p1)
cat('n')
}
}
test1()
如果只想打印输出,可以使用print
而不是返回值:
test1<-function(){
library(ggplot2)
res <- NULL
for(i in 1:4){
cat('n')
cat("## Chapter ", i, "n")
cat("### Exampstle ", "n")
cat(" Comment ", "n")
cat('n')
p1 <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
geom_point() +
ggtitle(paste("Chart nr ", i))
p1 <- plotly::ggplotly( p1 )
res[[i]] <-p1
}
return(res)
}
my_res <- test1()
my_res[[1]]
my_res[[2]]
my_res[[3]]
my_res[[4]]
其他明智的将每次迭代存储在一个列表中,例如稍后调用p1[[i]] = ggplot() ...
。