2014-12-03 50 views
0

我想要使用對renderText函數的兩個連續調用,在主頁上打印兩行反應值。我現在只看到第二個價值。在Shiny中打印多行renderText

如果我刪除第二個renderText函數,程序會愉快地打印第一個值,但是如果我將第二個renderText函數返回給代碼,則第一個值不會打印出來,而第二個值會打印出來。

我想要的是顯示兩個反應值(靈敏度和特異性)的主頁;一旦這個工作,然後我會拋出一些額外的陰謀。

這是錯誤的渲染*函數,或可能是錯誤的pageWithSidebar()函數?

這裏是UI.R和server.R文件。

#ui.R 

library(shiny) 

# Define UI for application that draws a histogram 
shinyUI(pageWithSidebar(
    headerPanel("Header"), 
    mainPanel("Main"), 

    # Sidebar with a slider input for the number of bins 
    sidebarLayout(
    sidebarPanel(
     sliderInput("sensitivity", 
        "Sensitivity", 
        min = 0.0, 
        max = 1.0, 
        value = 0.8), 
     sliderInput("specificity", 
       "Specificity", 
       min = 0.0, 
       max = 1.0, 
       value = 0.4) 
    ), 


    # Show a plot of the generated distribution 
    mainPanel({ 
     textOutput("caption1") 
     textOutput("caption2") 
    }) 
) 
) 
) 


and server.R 

#server.R 

library(shiny) 

shinyServer(function(input, output) { 
    output$caption1 <- renderText(input$sensitivity) 
    output$caption2 <- renderText(input$specificity) 
} 
) 

回答

0

您致電mainPanel()的語法稍微偏離。

爲了修正它,使用此

# Show a plot of the generated distribution 
mainPanel(
    textOutput("caption1"), 
    textOutput("caption2") 
) 

代替這種

# Show a plot of the generated distribution 
mainPanel({ 
    textOutput("caption1") 
    textOutput("caption2") 
}) 

與您的版本的問題是,在R,每當在大括號的表達式進行求值,只的結果它的最後一個聲明被返回。你可以看到,這是更一般的情況下,嘗試這樣的事情:

{5 
6 
9} 
# [1] 9 
+0

非常感謝!兩個錯誤..在第一個和第二個textOutput()調用之間使用{}並未包含。 – user2292410 2014-12-03 18:31:50

+0

@ user2292410很高興幫助。如果這裏的答案解決了您的問題,請接受它。那樣別人會知道它已經被解決了。或者,如果沒有,請讓我們知道它是如何失敗的,以便人們可以深入一點。 (要接受,只需單擊答案旁邊的複選標記即可,如果喜歡,也可以使用向上箭頭(儘管這不重要)。 – 2014-12-03 18:34:43