R 从摘要数据表中选择行,并使用单元格值对原始数据进行子集,然后在列表中创建新的数据表

R 从摘要数据表中选择行,并使用单元格值对原始数据进行子集,然后在列表中创建新的数据表,r,shiny,dt,R,Shiny,Dt,我已经从iris数据集创建了一个汇总表,当我从该数据表中选择任何一行时,我希望使用所选的行对主数据进行子集,然后将该子集数据发布为数据表 这段代码给了我一个错误:“closure”类型的对象是不可子集的。 我要求用户选择要执行的group by和运算的列(总和或平均值),以及要执行运算的列。这种方法似乎在MLEGE的代码中起作用,其中的值是预定义的,而不是从用户那里请求的 您的错误消息很可能来自这一行 selected_column <- df1[as.integer(input$sum

我已经从iris数据集创建了一个汇总表,当我从该数据表中选择任何一行时,我希望使用所选的行对主数据进行子集,然后将该子集数据发布为数据表

这段代码给了我一个错误:“closure”类型的对象是不可子集的。
我要求用户选择要执行的group by和运算的列(总和或平均值),以及要执行运算的列。这种方法似乎在MLEGE的代码中起作用,其中的值是预定义的,而不是从用户那里请求的

您的错误消息很可能来自这一行

selected_column <-  df1[as.integer(input$summarytable_rows_selected),]$get(input$group)
我对这一行也有问题

df[df$get(input$group) %in% selected_column, ]
改成

df[df[[input$group]] %in% selected_column, ]

这对我来说很有效

试着用df[[input$group]]替换df$getinput$group还有,在总结中,我没有遵循这个getinput$operatorgetinput$operate,你是否在应用函数使用df[[input$group]]仍然会出现错误,对于摘要,getinput$operator为我提供总和/平均值,getinput$operate为我提供要对其执行操作的列。第二部分即子集不清楚。输入$summarytable\u行\u在哪里被选中?在第一步中,您将按组进行总结。在该数据集中没有行索引。您希望如何为数据创建子集?假设您是按“种类”分组的,那么将有3行,并且不清楚最后2行drilldata代码中的逻辑输入$ID_rows_selected是返回所选行的DT包的函数。renderdatatabledf1中的行在本例中,例如,如果我按种类分组,将有三行,如果我单击该数据表的第一行,则对drilldata的第二行进行编码,即df1[as.integerinput$summarytable_Rows_selected,]$getinput$group将给我setosa作为输出as.integerinput$summarytable_Rows_selected==1 getinput$group==种类df1[1,]$species==setosa,然后第三行钻取数据将从包含setosa作为物种的df中选择行,非常感谢!这起作用了。是否有任何理由不为所选的_列工作?当在摘要中使用时,它可以工作。对不起,我不能回答这个问题,因为我通常不使用get。我使用get,因为输入$ID的值是character,我想将它们用作函数的参数,[[]]也在做同样的事情吗?或者,这是因为输入$ID是列表输出,[[]]用于提取列表元素。否,[]是从输入$ID的字符串值提取的,但您可以像第一个元素[[1]]一样使用数字值
df[df$get(input$group) %in% selected_column, ]
df[df[[input$group]] %in% selected_column, ]