我的global.R文件中有一个函数可以创建一个图:
CreatePlot<-function(mergedFiles,File1, File2)
{
main<- mergedFiles
csv1<- main[,1:4]
csv2<- cbind( main[,1],main[,5:7] )
strikes<- factor(main$Strike,levels=c(main$Strike),ordered=TRUE)
stacked<- stacked <- data.frame(time=strikes, value =c(c(csv1$Vol), c(csv2$Vol)) , variable = rep(c(File1,File2), each=NROW(csv1[,1])))
g<- ggplot(stacked, aes( x = time, y=value, colour=variable, group= variable) ) + geom_line() + xlab("Strike") +geom_point(shape = 7,size = 1) +
ylab("Volatiltiy") +ggtitle("Plot of Volatilities") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
return(g)
}
我想创建一个在循环中打印多个图的函数。假设我想在我的服务器中做3个这样的事情.R:
output$MyList <- renderUI({
main<- mergedFiles() # this is the data for my plots
g<-CreatePlot(main, input$File1, input$File2) #this calls the create plot function
for (i in 1:3){
renderPlot({
print(g) #for testing purposes I am just trying to print the same plot 3 times
})
}
})
和我在主面板中的UI.R:
uiOutput("MyList")
当我跑步时,没有任何事情发生。屏幕只是空白,没有错误。任何想法如何使用循环打印这样的多个图?
谢谢你!
答案 0 :(得分:2)
您无法使用renderUI
呈现情节。 renderUI
仅评估&#34;表达式,该表达式返回Shiny标记对象,HTML或此类对象的列表。&#34;
您必须为要显示的每个地图创建plotOutput
。
因此,您可以使用plotOuputs
动态创建多个renderUI
,然后使用循环创建图形。