【问题标题】:Merge contents within list of list by duplicate name按重复名称合并列表列表中的内容
【发布时间】:2011-11-13 01:23:29
【问题描述】:

鉴于这样的列表列表,是否有一种优雅的方式将原始转换为已处理?我正在使用像 1、2、3 这样的简单值,但值可以是数据框或其他值。目标不是对每个唯一命名的内容进行重复数据删除,而是通过合并内容来对名称进行重复数据删除。

original = structure(list(name1 = structure(list(one = 1, two = 2, three = 3), .Names = c("one", 
"two", "three")), name2 = structure(list(a = 9), .Names = "a"), 
    name1 = structure(list(four = 4, five = 5, six = 6), .Names = c("four", 
    "five", "six")), name2 = structure(list(b = 8), .Names = "b")), .Names = c("name1", 
"name2", "name1", "name2"))

treated = structure(list(name1 = structure(list(one = 1, two = 2, three = 3, 
    four = 4, five = 5, six = 6), .Names = c("one", "two", "three", 
"four", "five", "six")), name2 = structure(list(a = 9, b = 8), .Names = c("a", 
"b"))), .Names = c("name1", "name2"))

【问题讨论】:

  • modifyList 我认为(在我的手机上)

标签: r


【解决方案1】:

这是使用plyr 的解决方案。

require(plyr)
lnames  = names(original)
ulnames = unique(lnames)
treated = plyr::llply(ulnames, function(x) original[lnames == x])
treated = llply(treated, unlist, recursive = F)
names(treated) = ulnames

【讨论】:

    猜你喜欢
    • 2014-06-08
    • 2014-06-23
    • 2013-09-03
    • 2019-06-26
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多