r - 嵌套列表赋值 R

标签 r

我有以下类型的列表

categories = list(
 c("Women","Clothing", "Jeans"),
 c("Women","Clothing", "Sweaters"), 
 c("Men","Accessories", "Belts"), 
 c("Women", "Accessories", "Jewelry" ))

我想解析此列表并创建要以 JSON 格式导出的列表列表,它应具有以下结构:

Women={
Clothing= {
Jeans{},
Sweaters{}
},
accesories={
Jewleery{}
}
},
Men ={
Accessires={
Belts={}
}

所以它应该遍历列表中包含的每个字符向量元素,并检查最终列表中是否存在这样的元素,如果不存在则应追加它。它应该将元素附加到适当的级别。例如,如果 Clothing 是 Woman 的第二个元素,则它应该附加到最终列表的 Women 列表中。或者,如果毛衣是 Women.Clothing 的第三个元素,则它应该附加最终列表的 Women 列表的 Clothing 列表。

如果该元素已存在于给定级别,则不应追加,而应转到字符向量中的下一个元素。

在输入 lsit 的字符向量中,第一个元素始终为级别 1,第二个元素为 2,第三个元素为 3,依此类推。

它应该递归地完成,我尝试了几次,但我不知道如何分配给嵌套列表,特别是我需要进行嵌套分配。

最佳答案

我将数据放入矩阵中,转置,然后是数据框:

x <- data.frame(t(vapply(categories, identity, character(3))), stringsAsFactors = F)

然后分开,然后涂抹。如果您的级别超过 3 个,您可以递归地执行此操作:

lapply(split(x, x$X1), function(df) {
  lapply(split(df, df$X2), function(df) {
    lapply(split(df, df$X3), function(x) list())
  })
})

关于r - 嵌套列表赋值 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995014/

相关文章:

r - R:将多个库位置与最新软件包组合在一起

r - 如何在 R 中用大数据对多个变量进行一次热编码?

r - 在R中组合字符时只粘贴一次

r - 如何在 R 中重命名列标题

css - 在 R 光滑轮播中移动上一个下一个按钮

r - 用季度值插入 R 年度时间序列数据

r - 加速 R 中的 API 调用

windows - 在 R 中获取允许的语言环境名称的可靠方法是什么?

r - 如何使用 Quantmod 查询 Yahoo 是否存在股票代码

sql - 如何根据 R 中的数据框从 ODBC 数据库中删除记录