【问题标题】:R aggregate list of vectors to unique combinations of n vector elements and sum equal combinationsR聚合向量列表到n个向量元素的唯一组合和总和相等组合
【发布时间】:2021-01-28 14:16:01
【问题描述】:

我正在为列表寻找一种解决方案,该解决方案类似于 aggregate() 函数对数据帧所做的事情(也许在聚合函数中也有解决方案。

我有一个不同长度的数字向量列表:

mylist <- list(c(1,2,3), c(1,2), c(3,5,6), c(1,2,3,4), c(1,3), c(1,2,3))

因此,我希望有一个列表,其中包含向量中元素之间的唯一组合(仅观察到的元素,而不是所有潜在的元素),如下所示:

unique_combinations <- list(c(1,2), c(1,3), c(1,4), c(2,3), c(2,4), c(3,4), c(3,5), c(3,6), c(5,6), c(1,2,3), c(1,2,4), c(2,3,4), c(3,5,6), c(1,2,3,4))

以及每个组合出现在原始列表中的次数的向量:

sum <- c(4, 4, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1)

【问题讨论】:

    标签: r list vector aggregate


    【解决方案1】:

    也许你可以使用:

    x <- unlist(lapply(mylist, function(x)
     unlist(lapply(2:length(x), combn, x=x, list), FALSE)), FALSE)
    y <- unique(x)
    head(y)
    #[[1]]
    #[1] 1 2
    #
    #[[2]]
    #[1] 1 3
    #
    #[[3]]
    #[1] 2 3
    #
    #[[4]]
    #[1] 1 2 3
    #
    #[[5]]
    #[1] 3 5
    #
    #[[6]]
    #[1] 3 6
    
    table(match(x, y))
    # 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 
    # 4  4  3  3  1  1  1  1  1  1  1  1  1  1  1 
    

    【讨论】:

    • 谢谢。有用。但是,对于我的大型数据集,这是不可行的。
    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2021-08-22
    • 2015-06-29
    • 1970-01-01
    相关资源
    最近更新 更多