Ich habe ein seltsames Verhalten von rhandsontable
in einer glänzenden App beobachtet. In diesem einfachen Beispiel weise ich ein data.frame
einem reactiveValues
Element zu, wenn ein Ereignis eintritt. Die Daten werden dann in einer rhandsontable
angezeigt. Aber wenn ich einigen Eintrag der Tabelle ändern hot_to_r
die Funktion fehlschlägt mit: Fehler in seq.default: Argument ‚length.out‘ muss die Länge 1Fehler bei der Verwendung von rhandsontable in Shiny
Seltsamer der Fehler tritt nur auf, wenn ich iris
verwenden, aber nicht wenn ich iris[1:50, ]
verwende, sollte das identisch sein. Hat jemand eine Idee, wie man das beheben kann?
(Es gibt einen weiteren Fehler, wenn values$data
noch ist NULL
vor der actionButton
geklickt wird. Ich bin dafür bekannt ist, aber dies ist für die Frage nicht relevant.)
library(shiny)
ui <- fluidPage(
actionButton("click", "click"),
rHandsontableOutput("table")
)
server <- function(input, output, session) {
values <- reactiveValues(data = NULL)
observeEvent(input$click, {
values$data <- iris # with iris[1:50, ] no error appears
})
output$table <- renderRHandsontable({
rhandsontable(t(values$data))
})
observe({
if (!is.null(input$table$changes$changes)) {
table_data <- hot_to_r(input$table)
print(table_data)
}
})
}
shinyApp(ui, server)
Ich denke, der Fehler kommt von der Übertragung der Daten. Überprüfen Sie: 't (Kopf (Iris))'. Warum transponieren Sie, um die Tabellenausgabe anzupassen? – BigDataScientist
Der data.frame, den ich gerade benutze, hat nur eine Zeile, also denke ich, dass die Tabellenausgabe besser transponiert aussieht. Und das passt besser in ein Säulendesign, wenn ich andere ui-Elemente neben dem Tisch haben möchte. – needRhelp
Sie können den geänderten Datensatz mit 'as.data.frame (do.call (rbind, Eingabe $ table $ data))' abrufen – HubertL