使用cli::tree展示数据结构无输出,请求技术支援
问题原因与解决办法
cli包的tree()函数仅支持嵌套列表作为输入,你传入的data.frame结构无法被函数解析,所以没有输出。以下是两种可行的修正方案:
方案1:将现有data.frame转为嵌套列表
先把数据框转换为tree()能识别的嵌套结构,再执行函数:
library(cli) mtest <- data.frame( stringsAsFactors = FALSE, category = c("A","B"), sub_category = I(list(c("A1","A2","A3"),c("B1","B2"))) ) # 转换为嵌套列表 tree_data <- setNames( lapply(mtest$sub_category, function(x) list(sub_category = x)), mtest$category ) # 生成树形输出 tree(tree_data, root = "rcmdcheck")
方案2:直接构造嵌套列表输入
如果从数据构造阶段就适配tree(),直接创建嵌套列表更高效:
library(cli) # 直接定义嵌套列表结构 tree_data <- list( A = list(sub_category = c("A1", "A2", "A3")), B = list(sub_category = c("B1", "B2")) ) tree(tree_data, root = "rcmdcheck")
额外提示
- 若你的数据有更深层级,可通过循环或
purrr包的函数(如map())批量转换为嵌套列表。 tree()会自动识别列表的嵌套层级,层级越深,树形缩进越明显。
内容的提问来源于stack exchange,提问作者anderwyang
相关产品推荐
相关产品推荐

