我有一段代码允许上传CSV文件,转换成数据表,然后显示回主面板中的UI。收集列/变量名称并将其发送回UI侧栏,并带有一个复选框以激活它们以进行其他计算。我想在侧边栏中有三列,第一列是动态拉动的列名,第二列应该是每列中找到的唯一值的当前数量,第三列是我想要将它们分成两列的类别数。
UI.R
fluidRow(
column(6, checkboxGroupInput("dsnamesGrp","Variable name")),
column(3, textOutput("output.dsordsGrp")),
column(3, numericInput("assignBin","Bins", 12))
),
Server.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)的数量?
最后我还没有开始编写binning部分,但它将与某个用户输入框有关,以获得bin的数量。我确定它并不困难,但我无法弄清楚如何为每一行创建一个盒子 - 这是为每一列动态创建的。
更新:我意识到我在这个问题中放了太多项目。答案很有帮助,我将分别发布其他问题。
答案 0 :(得分:0)
正在处理闪亮的对象的类是错误的,你需要&#39;取消列表()&#39;某处的列表...使用下面的示例查找脚本中每个数据对象的类:
在你的服务器
output$info <- renderText({
print(unlist(data_object))
})
并在您的用户界面中
textOuput('info')
并从那里进行调试。