R 单击后使用带有滑块的click.dt进行过滤不更新
请运行此代码。当您单击数据表中的一行时,您将看到“a”列中的数字被绘制出来。这是通过回调和observeEvent完成的。那很好R 单击后使用带有滑块的click.dt进行过滤不更新,r,shiny,shinydashboard,shinyjs,shinybs,R,Shiny,Shinydashboard,Shinyjs,Shinybs,请运行此代码。当您单击数据表中的一行时,您将看到“a”列中的数字被绘制出来。这是通过回调和observeEvent完成的。那很好 library(shiny) library(DT) runApp(shinyApp( ui = fluidPage( DT::dataTableOutput('table') , selectInput("NUMBER", "Number:", c(1,100,1000000),sel
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(
DT::dataTableOutput('table') ,
selectInput("NUMBER", "Number:", c(1,100,1000000),selected = 1),
plotOutput("p")
),
server = function(input, output, session) {
NUMBER = reactive({
input$NUMBER
})
output$table <- DT::renderDataTable({
datatable(data.frame(a = c(85,7),b=c(444,2)), rownames = FALSE, selection = 'none', callback=
JS("table.on('click.dt', 'tr', function() {
var data=table.row(this).data();
Shiny.onInputChange('rows',data[0]);
});")
)}
)
observeEvent(input$rows, {
print( input$rows)
print( class( input$rows) )
a = as.numeric(input$rows)
print(a)
print(NUMBER())
new_number = a #THIS WORKS!!!
#new_number = a * as.numeric(NUMBER()) #THIS DOES NOT WORK multiple a by the number in the slider when the SLIDER Is CHANGED
output$p = renderPlot({
# browser()
plot( new_number )
})
})}
))
并取消对此行的注释:
new_number = a
new_number = a * as.numeric(NUMBER())
现在重新运行代码,您将看到,当您从滑块中选择不同的数字时,什么也没有发生。这是因为
new_number = a * as.numeric(NUMBER())
在ObserveEvent函数中,未单击表…只是更改了滑块。那么,如何使NUMBER()可用以实现这一点呢
谢谢。您所要做的就是将一个observeEvent放入您的observeEvent:)这样,在渲染新的绘图时,R将获取更新的输入。希望这有帮助
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(
DT::dataTableOutput('table') ,
selectInput("NUMBER", "Number:", c(1,100,1000000), selected = 1),
plotOutput("p")
),
server = function(input, output, session) {
NUMBER = reactive({
input$NUMBER
})
output$table <- DT::renderDataTable({
datatable(data.frame(a = c(85,7),b=c(444,2)), rownames = FALSE, selection = 'none', callback=
JS("table.on('click.dt', 'tr', function() {
var data=table.row(this).data();
Shiny.onInputChange('rows',data[0]);
});")
)}
)
observeEvent(input$rows, {
print( input$rows)
print( class( input$rows) )
a = as.numeric(input$rows)
new_number <- a
observeEvent(input$NUMBER, {
print(a)
print(NUMBER())
number = a * as.numeric(NUMBER())
output$p = renderPlot({
# browser()
plot( number )
})
})
output$p = renderPlot({
# browser()
plot( new_number )
})
})
}
))
库(闪亮)
图书馆(DT)
runApp(shinyApp)(
ui=fluidPage(
DT::dataTableOutput('table'),
选择输入(“数字”,“数字:”,c(11001000000),选择=1),
绘图输出(“p”)
),
服务器=功能(输入、输出、会话){
数量=无功({
输入$NUMBER
})
输出$table您所要做的就是在您的observeEvent:)中放入一个observeEvent,这样在呈现新的绘图时,R将获取更新的输入。希望这有帮助
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(
DT::dataTableOutput('table') ,
selectInput("NUMBER", "Number:", c(1,100,1000000), selected = 1),
plotOutput("p")
),
server = function(input, output, session) {
NUMBER = reactive({
input$NUMBER
})
output$table <- DT::renderDataTable({
datatable(data.frame(a = c(85,7),b=c(444,2)), rownames = FALSE, selection = 'none', callback=
JS("table.on('click.dt', 'tr', function() {
var data=table.row(this).data();
Shiny.onInputChange('rows',data[0]);
});")
)}
)
observeEvent(input$rows, {
print( input$rows)
print( class( input$rows) )
a = as.numeric(input$rows)
new_number <- a
observeEvent(input$NUMBER, {
print(a)
print(NUMBER())
number = a * as.numeric(NUMBER())
output$p = renderPlot({
# browser()
plot( number )
})
})
output$p = renderPlot({
# browser()
plot( new_number )
})
})
}
))
库(闪亮)
图书馆(DT)
runApp(shinyApp)(
ui=fluidPage(
DT::dataTableOutput('table'),
选择输入(“数字”,“数字:”,c(11001000000),选择=1),
绘图输出(“p”)
),
服务器=功能(输入、输出、会话){
数量=无功({
输入$NUMBER
})
输出$table谢谢,如果我有多个选择输入怎么办?假设我有编号1和类别observeEvent应该如何设置observeEvent(输入$NUMBER,输入$CATEGORY{…….output$p=renderplot()})?谢谢,如果我有多个选择输入怎么办?假设我有编号1和类别observeEvent应该如何设置observeEvent(输入$NUMBER,输入$CATEGORY{…….输出$p=renderplot()})?