Я использую rhandontable в приложении Shiny, и я хотел бы знать, как использовать метод getSelected() для Handsontable в этом случае, поскольку я намерен применять изменения в data.frame. спасибо!Получить выбранные строки Rhandsontable
ответ
В то время как rhandontable является реальной хорошей реализацией handsontable (кредит идет на @jrowen), в настоящее время он не включает getSelected().
Событие пользователя, изменяющее любую ячейку (включая выбор/снятие флажка), отслеживается блестящим. Это дает возможность использовать флажки, чтобы позволить пользователю выбирать (или отменять выбор) одну или несколько строк.
К сожалению, логика понимания того, что была выбрана, должна быть разработана на стороне сервера вашим кодом.
Фрагмент кода, приведенный ниже, может дать вам представление о том, как управлять им.
options(warn=-1)
library(rhandsontable)
library(shiny)
options(warn=-1)
quantity <- id <- 1:20
label <- paste0("lab","-",quantity)
pick <- FALSE
iris_ <- data.frame(id=id,pick=pick, quantity=quantity,label=label,iris[1:20,] ,stringsAsFactors = FALSE)
mtcars_ <- data.frame(id=id,pick=pick, quantity=quantity,label=label,mtcars[1:20,] ,stringsAsFactors = FALSE)
iris_$Species <- NULL # i.e. no factors
#---------------------------
ui <- fluidPage(
fluidRow(
column(6,rHandsontableOutput('demTb')),
column(3,uiOutput("demSli")),
column(3, radioButtons("inButtn", label=NULL, choices= c("iris","mtcars"), selected = "iris", inline = TRUE))
)
)
server <- function(session, input, output) {
selData <- ""
output$demSli <- renderUI({
if(is.null(input$demTb)) return()
isolate({
df_ <- hot_to_r(input$demTb)
index <- which(df_$pick==T)
if(length(index)==0) return()
labs <- iris_$label[index]
pages <- "test"
iter <- length(labs)
buttn <- 1
valLabs <- sapply(1:iter, function(i) {
if(is.null(input[[paste0(pages,"d",labs[i],buttn)]])) {
0
} else { as.numeric(input[[paste0(pages,"d",labs[i],buttn)]]) }
})
#
toRender <- lapply(1:iter, function(i) {
sliderInput(inputId = paste0(pages,"d",labs[i],buttn),
label = h6(paste0(labs[i],"")),
min = -100,
max = 100,
step = 1,
value = valLabs[i],
post="%",
ticks = FALSE, animate = FALSE)
})
})
return(toRender)
})
#--------------------
rds <- reactive({
# if(is.null(input$demTb)) {
if(input$inButtn == "iris") {
if(selData == "" | selData == "mtcars") {
selData <<- "iris"
return(iris_) # first time for iris
}
} else {
if(selData == "iris") {
selData <<- "mtcars"
return(mtcars_) # first time for mtcars
}
}
df_ <- hot_to_r(input$demTb)
isolate({
index <- which(df_$pick==T)
if(length(index)==0) return(df_)
labs <- iris_$label[index]
pages <- "test"
iter <- length(labs)
buttn <- 1
}) # end isolate
valLabs <- sapply(1:iter, function(i) {
if(is.null(input[[paste0(pages,"d",labs[i],buttn)]])) {
0
} else {
as.numeric(input[[paste0(pages,"d",labs[i],buttn)]])/100
}
})
dft_ <- data.frame(label=labs, multi=valLabs, stringsAsFactors = FALSE)
dft_ <- merge(iris_,dft_,by="label", all.x=T)
dft_$quantity <- sapply(1:length(dft_$quantity), function(z) {
if(is.na(dft_$multi[z])) {
dft_$quantity[z]
} else { iris_$quantity[z]*(1 + dft_$multi[z]) }
})
dft_[with(dft_,order(as.numeric(id))),]
df_[with(df_,order(as.numeric(id))),]
df_$quantity <- df_$quantity
return(df_)
})
output$demTb <- renderRHandsontable({
if(is.null(rds())) return()
df_ <- rds()
df_ <- df_[with(df_,order(as.numeric(id))),]
rhandsontable(df_, readOnly = FALSE, rowHeaders= NULL, useTypes= TRUE) %>%
hot_table(highlightCol = TRUE, highlightRow = TRUE)
})
}
shinyApp(ui, server)
Вы можете получить выбранные значения строк, столбцов, диапазонов и ячеек, а также отредактированные ячейки с помощью selectCallback = TRUE. Вы можете отредактировать ячейку, дважды щелкнув по ней, и принять изменения, нажав «return» или «enter».
Минимальный пример:
library(shiny)
library(rhandsontable)
ui=fluidPage(
rHandsontableOutput('table'),
verbatimTextOutput('selected')
)
server=function(input,output,session)({
df=data.frame(N=c(1:10),L=LETTERS[1:10],M=LETTERS[11:20])
output$table=renderRHandsontable(
rhandsontable(df,selectCallback = TRUE,readOnly = FALSE)
)
output$selected=renderPrint({
cat('Selected Row:',input$table_select$select$r)
cat('\nSelected Column:',input$table_select$select$c)
cat('\nSelected Cell Value:',
input$table_select$data[[
input$table_select$select$r]][[input$table_select$select$c]])
cat('\nSelected Range: R',input$table_select$select$r,
'C',input$table_select$select$c,':R',input$table_select$select$r2,
'C',input$table_select$select$c2,sep="")
cat('\nChanged Cell Row Column:',input$table$changes$changes[[1]][[1]],
input$table$changes$changes[[1]][[2]])
cat('\nChanged Cell Old Value:',input$table$changes$changes[[1]][[3]])
cat('\nChanged Cell New Value:',input$table$changes$changes[[1]][[4]])
})
}) # end server
shinyApp(ui = ui, server = server)
- 1. Как получить выбранные данные из строки
- 2. Как получить выбранные строки в таблице?
- 3. Как получить выбранные строки с использованием Hibernate
- 4. screen ui grid получить выбранные данные строки
- 5. Как получить выбранные строки в vb6 Datagrid
- 6. Получить все значения строки, выбранные в jqGrid
- 7. C#/WPF: получить выбранные строки из ListView
- 8. Получить только выбранные строки из файла
- 9. Угловая UI сетки 3,0 получить выбранные строки
- 10. Как получить выбранные данные строки в кендо
- 11. Как получить выбранные строки Checkcolumn в сетке
- 12. Silverlight получить выбранные данные строки в DataGrid
- 13. ASP.net MVC Получить только выбранные строки (флажок)
- 14. Как получить выбранные данные строки в JQuery
- 15. Как получить выбранные строки в vb6 TDBgrid
- 16. wxPython | wxDataViewListCtrl получить все выбранные строки/элементы
- 17. получить выбранные данные строки в JSF
- 18. Получить выбранные строки таблицы с SWT.MULTI
- 19. Получить выбранные строки на кнопке Нажмите
- 20. Как получить выбранные строки в ASPxGridView?
- 21. DataViewGrid - выбранные строки (unbound)
- 22. Genexus: выбранные строки
- 23. Sum только выбранные строки
- 24. Изменение цвета фона нескольких строк в rhandsontable
- 25. Получить проверенные строки [Выбранные строки] из сетки kendo
- 26. Выбранные строки mysqli
- 27. Случайные выбранные строки
- 28. UITableView выбранные строки после редактирования
- 29. Удалить выбранные строки в np.array
- 30. Как получить выбранные значения
Хорошо, спасибо. Одно замечание: два значения «+ 1» для значения ячейки должны быть удалены. –
К сожалению, я исправил его, спасибо! –