【发布时间】:2018-06-08 11:09:47
【问题描述】:
我有一段代码允许上传 CSV 文件,将其转换为数据表,然后在主面板的 UI 中重新显示。收集列/变量名称并将其发送回 UI 侧边栏,并带有一个复选框以激活它们以进行其他计算。我想在侧边栏中有三列,第一列是动态拉取的列名,第二列应该是在每列中找到的当前唯一值的数量,第三列是我想要将它们放入的类别数.
UI.R
fluidRow(
column(6, checkboxGroupInput("dsnamesGrp","Variable name")),
column(3, textOutput("output.dsordsGrp")),
column(3, numericInput("assignBin","Bins", 12))
),
服务器.R
dsnames <- c()
ordinality <- c()
observeEvent(input$datafile, ({
dsnames <- names(data_set())
cb_options <- list()
cb_options[dsnames] <- dsnames
updateCheckboxGroupInput(session, "dsnamesGrp", label = "Variable name", choices = cb_options, selected = "")
ordinality <- lapply(data_set, function(x)length(unique(x)))
ord_values <- list()
ord_values[ordinality] <- renderDataTable(ordinality)
output$dsordsGrp <- ord_values
})
)
output$choose_columns <- renderUI({
if(is.null(input$dataset))
return()
colnames <- names(contents)
checkboxGroupInput("columns", "Choose columns", choices = colnames, selected = "")
})
我遇到了三个问题。一,如何收集每列的唯一值数量并将它们作为列名旁边的列表传递给 UI?我以为我可以模仿在这里找到的用于收集列名的代码,但我得到了:
Warning: Error in as.vector: cannot coerce type 'closure' to vector of type 'list'
我用来完成此任务的算法来自R Count unique values for every column
第二,如何添加序数(Ord)的列标题以及目标箱数(Bins)?
最后,我什至还没有开始编写分箱部分,但这与使用某种用户输入框来获取分箱数量有关。我确信这并不难,但我不知道如何为每一行创建一个框 - 即动态地为每一列创建一个框。
更新:我意识到我在这个问题中放了太多东西。答案很有帮助,其他问题我会单独发布。
【问题讨论】:
标签: r csv shiny data.table