如何将R三列DataFrame转为适配shinyTree的三层嵌套列表
解决方案
方案1:修改你现有的plyr逻辑
你原来的代码最内层用dlply会返回data.frame格式,只需把最内层操作替换为直接提取Activity列的字符值即可:
library(plyr) activity.list <- dlply(activities, .(Category), dlply, .(Sub.category), function(df) { # 可根据需求决定是否去掉NA值 as.character(na.omit(df$Activity)) })
方案2:tidyverse生态实现(更符合当前R代码编写习惯,无需依赖plyr)
library(tidyverse) activity.list <- activities %>% # 可选操作:过滤掉Activity为空的行 filter(!is.na(Activity)) %>% # 第一层按Category拆分 split(f = .$Category) %>% # 第二层按Sub.category拆分,第三层直接提取Activity为字符向量 map( ~ split(.x, f = .x$Sub.category) %>% map(~ as.character(.x$Activity)) )
校验方法
执行str(activity.list, max.level = 3)即可查看结构,输出会显示三层嵌套结构:Category -> Sub.category -> 字符型Activity向量,完全匹配shinyTree要求的格式,可直接传入组件使用。
内容的提问来源于stack exchange,提问作者Brooke Gibbons
相关产品推荐
相关产品推荐

