Я пытался понять, как заставить DT :: dataTableProxy Использовать DT в Shiny работать в моем приложении, но я не могу пройти, возвращая выбранные столбцы.
ПослеНапример, здесь , я попытался изменить код для печати описательной статистики (используя pastecs
).Но единственное, что отрисовывается, это выделенный буквенный столбец.
#modified UI, adding another verbatimTextOutput
ui =
...
verbatimTextOutput('foo2')
server =
...
output$foo2= renderPrint({
x<-input$foo_columns_selected
stat.desc(x)
})
результат: ![Image of ShinyApp](https://i.stack.imgur.com/oP5ky.png)
Что я хотел бы сделать, это получитьзначения выбранного столбца и запустите функцию stat.desc
.В приведенном выше примере он будет выполняться в столбце 2 (Sepal.Width) и отображать описательную статистику.Например:
![console command and desired reactive output](https://i.stack.imgur.com/AVwE6.png)
В дальнейшем я хотел бы, чтобы stat.desc
было выполнено для визуализированной DataTable из нескольких selectInputs.Но .. один шаг за один раз.Сначала я хочу понять, как получить фактические значения для выполнения функций.
Обновить!
Итак, я думаю, что я понял, как успешно выполнить то, что мне нужно. любит , если другой пользователь сможет проверить, что он работает правильно:
Обновлен скрипт:
require(DT)
library(dplyr)
library(tibble)
ui<-
fluidPage(
selectInput('obj','Choose Name:', choices = c('',my.data$Name), selectize = TRUE),
dateRangeInput('daterange',"Date range:",
start= min(my.data$Date),
end = max(my.data$Date)),
mainPanel(
dataTableOutput('filteredTable'),
dataTableOutput('filteredTable2'),
tableOutput('table')
)
)
server<-function(input,output, session){
filteredTable_data <- reactive({
my.data %>% rownames_to_column() %>% ##dplyr's awkward way to preserve rownames
filter(., Name == input$obj) %>%
filter(., between(Date ,input$daterange[1], input$daterange[2])) %>%
column_to_rownames()
})
##explicit assignment to output ID
DT::dataTableOutput("filteredTable")
output$filteredTable <- DT::renderDataTable({
datatable(
filteredTable_data(),
selection = list(mode = "multiple"),
caption = "Filtered Table (based on cyl)"
)
})
filteredTable_selected <- reactive({
ids <- input$filteredTable_rows_all
filteredTable_data()[sort(ids),] ##sort index to ensure orig df sorting
})
##anonymous
output$filteredTable2<-DT::renderDataTable({
x<-filteredTable_selected() %>% select(starts_with("Value"))
x<-as.data.frame(stat.desc(x))
datatable(
x)
})
}
shinyApp(ui, server)
Результат:
![Part4](https://i.stack.imgur.com/6x7vn.png)
Следующие ответы помогли безмерно : Чтение объектов из блестящего выходного объекта не разрешено? & Как получить данные из выбранных строк отфильтрованной таблицы данных (DT)?