首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rpivotTable中的唯一表

rpivotTable中的唯一表
EN

Stack Overflow用户
提问于 2020-05-05 20:21:06
回答 1查看 360关注 0票数 1

我在闪亮的应用程序中使用rpivotTable包,我只想为用户选择“Table”(没有图表)。

RenderName参数仅用于选择默认显示.

代码语言:javascript
复制
output$pivot <- renderRpivotTable(
    rpivotTable(iris, 
                rendererName = "Table" )
    )

事先非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 10:53:40

这里有很多问题。

  • 您可以通过renderers中的anonymos rpivotTable()参数指定呈现程序。我有JS代码表单这里
  • 但是,当只选择一个选项时会出现错误。在本例中,rpivotTable()再次将参数包装在一个列表中(参见原始函数代码中的Map()调用),并且转发到JS失败。

因此,我解释了这个问题,并对这个功能做了一些扩展。使用聚合器/呈现器来查看它如何与原始rpivotTable()函数的行为不同。

代码语言:javascript
复制
# define own function
my_rpivotTable <- function (data, rows = NULL, cols = NULL, aggregatorName = NULL, 
          vals = NULL, rendererName = NULL, sorter = NULL, exclusions = NULL, 
          inclusions = NULL, locale = "en", subtotals = FALSE, ..., 
          width = 800, height = 600, elementId = NULL) 
{
  if (length(intersect(class(data), c("data.frame", "data.table", 
                                      "table", "structable", "ftable"))) == 0) {
    stop("data should be a data.frame, data.table, or table", 
         call. = F)
  }
  if (length(intersect(c("table", "structable", "ftable"), 
                       class(data))) > 0) 
    data <- as.data.frame(data)
  params <- list(rows = rows, cols = cols, aggregatorName = aggregatorName, 
                 vals = vals, rendererName = rendererName, sorter = sorter, 
                 ...)
  params <- Map(function(p) {
    # added to the class check -------------------------------------------------
    if (length(p) == 1 && class(p[[1]]) != "JS_EVAL") {
      p = list(p)
    }
    return(p)
  }, params)
  par <- list(exclusions = exclusions, inclusions = inclusions)
  params <- c(params, par)
  params <- Filter(Negate(is.null), params)
  x <- list(data = data, params = params, locale = locale, 
            subtotals = subtotals)
  htmlwidgets::createWidget(name = "rpivotTable", x, width = width, 
                            height = height, elementId = elementId, package = "rpivotTable")
}
代码语言:javascript
复制
# create the pivot table
my_rpivotTable(
  expand.grid(LETTERS, 1:3),
  aggregatorName = "Count",
  aggregators = list(Sum = htmlwidgets::JS('$.pivotUtilities.aggregators["Sum"]'),
                     Count = htmlwidgets::JS('$.pivotUtilities.aggregators["Count"]')),
  rendererName = "fancyTable",
  renderers = list(fancyTable = htmlwidgets::JS('$.pivotUtilities.renderers["Table"]'))

)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61622346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档