デフォルトの rhandsontable テーブルを使用して shinny アプリを作成しようとしていますが、ユーザーにはそれを更新するための 2 つのオプションがあります。
- rhandsontable テーブルで直接手で記入するか、
- 数値入力と
actionButton
ここに私のコード:
library(shiny)
library(rhandsontable)
library(data.table)
data_pop <- data.table(`Number` = c(1, 1, 2, 2, 3, 3),
`Country` = c("Andorra", "Angola", "Anguilla", "Antigua and Barbuda", "Argentina", "Armenia"),
`Population` = c(123, 456 , 789, 246 , 369 , 159))
ui <- navbarPage(title = tags$b(tags$span("APP")), id = "nav", fluid = TRUE,
tabPanel(tags$b(tags$span("Model")),
sidebarLayout(
sidebarPanel(
numericInput("number", label = "Number", value = 0, min = 0, max = Inf),
actionButton("load", "Load", align = 'right'),
),
mainPanel(
rHandsontableOutput("out_table"),
)
)
)
)
server <- function(input, output) {
default <- data.table(`Country` = "",
`Column` = as.integer(0),
stringsAsFactors = FALSE)
values <- reactiveValues()
observe({
if (!is.null(input$table)) {
table <- hot_to_r(input$out_table_country)
} else {
if (is.null(values[["table"]])) {
default <- eventReactive(input$load, {
data_pop[`Number` == input$number, .(`Country`, `Population`)]
})
table <- default
}
else {
table <- values[["table"]]
}
}
values[["table"]] <- table
})
output$out_table <- renderRHandsontable({
table <- values[["table"]]
if (!is.null(table))
rhandsontable(table, stretchH = "all") %>%
hot_col(col = "Country", type = "autocomplete", source = data_pop$Country, strict = T) %>%
hot_col(col = "Column", format = "0,0")
})
}
shinyApp(ui = ui, server = server)
default
テーブルをリアクティブなものに置き換えようとすると、問題が発生します。
Error in as.vector: cannot coerce type 'closure' to vector of type 'list'
列の形式に関連しているかどうかはわかりませんhot_col
...多くの解決策を試しましたが、まだ何も機能しません。助けていただければ幸いです!
どうもありがとう、
ファビアン