現在、最初のShinyアプリを作成しようとしていますが、いくつか問題があります。別の出力オブジェクトから変数にアクセスすることは可能ですか?最初のタブで表を印刷し、個々のプロットを別々のタブに表示しようとしています。3つすべてを1つのタブに表示できるとさらに便利です。
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Table", tableOutput("dataTable")),
tabPanel("xy Chart", plotOutput("xyChart")),
tabPanel("yz Chart", plotOutput("yzChart"))
)
)
)
)
)
server <- function(input, output) {
output$dataTable <- renderTable({
x <- rnorm(100, mean = 1)
y <- rnorm(100, mean = 0)
z <- rnorm(100, mean = 0.5)
dataTable <- cbind(x,y,z)
})
output$xyChart <- renderPlot({
plot(x,y)
})
まだ読んでいない場合は、利用可能なshiny
チュートリアルをご覧ください。
の単一のoutput
内部にデータを含める代わりに、server
これらの変数を他の場所で宣言できます。shiny
アプリを作成しているので、これらの変数を変更し、他の変数をoutputs
自動的に更新することに興味があるかもしれません。
それが当てはまる場合はreactiveValues
、reactive
関数を使用または作成することをお勧めします。
以下に例を示します。を使用reactiveValues
すると、値(x、y、zなど)を読み取るときに、呼び出し元の式がその値に反応的に依存します(変更が加えられると更新されます)。これらの値を変更するたびに、その値に依存するすべてのリアクティブ関数に通知されます。
library(shiny)
ui <- fluidPage(
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Plot", plotOutput("plot")),
tabPanel("Summary", verbatimTextOutput("summary")),
tabPanel("Table", tableOutput("table"))
)
)
)
server <- function(input, output) {
my_data <- reactiveValues(
x = rnorm(100, mean = 1),
y = rnorm(100, mean = 0),
z = rnorm(100, mean = 0.5)
)
output$table <- renderTable({
data.frame(my_data$x, my_data$y, my_data$z)
})
output$plot <- renderPlot({
plot(my_data$x, my_data$y)
})
output$summary <- renderText({
"Summary Goes Here"
})
}
shinyApp(ui = ui, server = server)
また、(コメントで説明されているように)3つすべてを1つのパネルに表示したい場合は、これを使用してくださいui
。
ui <- fluidPage(
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("All 3",
plotOutput("plot"),
verbatimTextOutput("summary"),
tableOutput("table")
)
)
)
)
input$nRV
(コメントに記載されているように)を含める場合は、reactive
式を使用して、次のように呼び出しますmy_data()
。
server <- function(input, output) {
my_data <- reactive({
a = rnorm(input$nRV, mean = 2)
b = rnorm(input$nRV, mean = 5)
x = rnorm(input$nRV, mean = 3)
y = rnorm(input$nRV, mean = 0)
z = rnorm(input$nRV, mean = 0.5)
data.frame(a, b, x, y, z)
})
output$table <- renderTable({ data.frame(my_data()$x, my_data()$y, my_data()$z)
})
output$plot <- renderPlot({ plot(my_data()$x, my_data()$y) })
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加