我有以下类型的列表
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/