我一直被困在这个问题上两天了,我会喜欢一些比我更聪明的人的帮助。我正在使用名为“shinyTable”的软件包(https://github.com/trestletech/shinyTable),我很难操纵它。 ?基本上,我怎样才能使这个表更改基于输入$行的大小如果我点击“提交”按钮,这是一个工作代码W/O“提交”按钮:使用eventReactive与渲染功能
library(shinythemes)
library(shiny)
library(shinyTable)
ui <- fluidPage(theme = shinytheme("slate"),titlePanel(HTML("<h1> <font face=\"Rockwell Extra Bold\" color=\"#b42000\"><b><b>R/Econ</b></b></font> <font face=\"Lucida Calligraphy\" colsor=\"white\" >Model</font></h1>")),
sidebarLayout(
sidebarPanel(
numericInput("rows", label = h3("Number of Rows"), value = 20),
numericInput("cols", label = h3("Number of Columns"), value = 2)
),
mainPanel(
htable("tbl")
)
)
)
server <- function(input, output)
{
output$tbl <- renderHtable({
if (is.null(input$tbl)){
# Seed the element with some data initially
tbl <- data.frame(list(num1=1:input$rows,
num2=(1:input$rows)*20,
letter=LETTERS[1:(input$rows)]))
cachedTbl <<- tbl
print(tbl)
return(tbl)
} else{
cachedTbl <<- input$tbl
print(input$tbl)
return(input$tbl)
}
})
}
shinyApp(ui = ui, server = server)
现在,我当我的输入$行或输入$ cols更改时,希望表的大小可以动态更改。我不能为我的生活找出如何使这项工作。我尝试了以下内容:
myx<-eventReactive (input$submit, {
output$tbl <- renderHtable({
if (is.null(input$tbl)){
tbl <- data.frame(list(num1=1:input$rows,
num2=(1:input$rows)*20,
letter=LETTERS[1:(input$rows)]))
cachedTbl <<- tbl
print(tbl)
return(tbl)
} else{
cachedTbl <<- input$tbl
print(input$tbl)
return(input$tbl)
}
})
})
但这不起作用。我的思考过程是,如果点击提交按钮,它会重新创建表。我想要输入$行来改变表的大小,但是我的大小和提交按钮的点击都没有改变。实际上,添加eventReactive会将表格更改为没有值的位置,并且不会输入任何值。我老实说输了。我想这个其他变化,如本:
myx<-eventReactive (input$submit, {
if (is.null(input$tbl)){
tbl <- data.frame(list(num1=1:input$rows,
num2=(1:input$rows)*20,
letter=LETTERS[1:(input$rows)]))
cachedTbl <<- tbl
print(tbl)
return(tbl)
} else{
cachedTbl <<- input$tbl
print(input$tbl)
}
})
#-------
# myx2<-eventReactive (cachedTbl, {
# })
output$tbl <- renderHtable({
tbl<<-myx()
print(data.frame(tbl))#Tried and failed using myx()
return(data.frame(tbl))
})
在这样做,我想我可以表功,然后把它传递给renderHTable。所有这些尝试都分享了我试图让事情变得被动的事实。
如何让该表根据输入$行更改其大小如果我点击“提交”按钮?请帮忙!
你应该使用rhandsontable https://github.com/jrowen/rhandsontable这是一个shinyTable的演变。 rhandsontable在Cran上并且保持不变。 shinyTable不是。 – Enzo
尝试使用'observeEvent()'而不是'eventReactive()',我无法找到你已经定义了'input $ rows'的地方,因为代码表示'input $ rows'为NULL – Phi