我想打电话
output$IPLMatchPlot <- renderPlot({
f(x)
}) 或
output$IPLMatchPrint <- renderPrint({
f(x)
})
函数f(x)返回绘图或数据框。
我可以在server.R中单独执行此操作,但希望显示为绘图或数据框的文本。有关如何执行此操作的任何建议
答案 0 :(得分:4)
这可以通过使用renderUI()来处理,它检查它获得的输出类型并呈现适当的输出。
在UI部分中,您可以在要显示情节或打印的位置放置uiOutput
。
uiOutput("Plotorprint")
然后在服务器中,您将使用以下内容定义uiOutput
:
output$Plotorprint <- renderUI({
if (is.data.frame(f(x))) { # Check if output of f(x) is data.frame
verbatinTextOutput("ISPLMatchPrint") # If so, create a print
} else { # If not,
plotOutput("ISPLMatchPlot") # create a plot
}
})
您也可以在服务器中保留您在问题中发布的定义。
然后应检查输出f(x)的输出,并呈现适当的输出。
答案 1 :(得分:0)
基于@ Marjin的回复的最终代码是
server.R
output$IPLMatchPlot <- renderPlot({
f(x,y,z)
})
output$IPLMatchPrint <- renderPrint({
df <- f(x,y,z)
df
})
output$plotOrPrint <- renderUI({
if(is.data.frame(scorecard <- printOrPlot(input, output,teams, otherTeam))){
verbatimTextOutput("IPLMatchPrint")
}
else{
plotOutput("IPLMatchPlot")
}
})
ui.R
uiOutput("plotOrPrint"),