【发布时间】:2018-02-28 11:03:42
【问题描述】:
我有一个大数据框,我正在尝试根据数据框中的组构造一个字符串,以便在shinyTree 中显示。
这是一个数据示例:
dat <- data.frame("region" = c(paste("region", rep(1:3, each=4))),
"area" = c(paste("area", rep(1:6, each=2))),
"name" = c(paste("name",1:12)))
shinyTree 要求将数据构造成如下所示的字符串:
listString <- paste0("list('region 1' = list('area 1' = list('name 1'='', 'name 2'=''),
'area 2' = list('name 3'='', 'name 4'='')),
'region 2' = list('area 3' = list('name 5'='', 'name 6'=''),
'area 4' = list('name 7'='', 'name 8'='')),
'region 3' = list('area 5' = list('name 9'='', 'name 10'=''),
'area 6' = list('name 11'='', 'name 12'='')))")
有没有办法在 dplyr 中使用 mutate 和 groups 来构造这个字符串? "list(" 元素应连接到每个组的第一次出现。
我尝试了嵌套for 循环和嵌套lapply() 函数和compiler::cmpfun() 来加快速度,但事实证明这太慢了,无法构建。我的数据有 5 个“级别”和 ~3000 行,处理大约需要 30 秒,这对于闪亮的应用程序来说太慢了。
任何帮助将不胜感激。
【问题讨论】: