【问题标题】:Combination Matrix while keeping original matrices在保留原始矩阵的同时组合矩阵
【发布时间】:2019-09-05 15:08:54
【问题描述】:

我有一个已经生成的函数,它采用矩阵作为两个输入。所以我想做的是创建一个两列矩阵或列表或具有我输入矩阵的所有组合的东西。

我尝试过combn()expand.grid,但它们似乎都在它们的输出中扩展了我的矩阵输入。这不是我需要的,因为我需要存储输入矩阵以便以后调用它们。

例如:

a = c(1,2,3)

b = c(4,5,6)

c = c(7,8,9)

d = c(10,11,12)

我想要一个显示如下内容的输出:

[a, b]

[a, c]

[a, d]

[b, c]

[b, d]

[c, d]

请注意,我保留了原始矩阵,而不是比较矩阵内部的内容。

【问题讨论】:

    标签: r matrix combinations


    【解决方案1】:

    我们可以使用combn 来做到这一点。使用mget 将对象放入list,然后使用combn 选择两个元素的组合

    combn(mget(letters[1:4]), 2, simplify = FALSE)
    #[[1]]
    #[[1]]$a
    #[1] 1 2 3
    
    #[[1]]$b
    #[1] 4 5 6
    
    
    #[[2]]
    #[[2]]$a
    #[1] 1 2 3
    
    #[[2]]$c
    #[1] 7 8 9
    
    #...
    

    【讨论】:

    • 嗯,我在实际代码中使用的名称比字母要抽象一些。我只是以字母为例,所以我认为使用字母函数对我不起作用。
    • @Beebs 我也用它来显示对象。如果你想以不同的方式做,那么mget(c("a", "b", "c", "d"))
    • 另外,如果这些是在mget(ls()) 环境中创建的唯一对象会更容易
    • @Beebs 我没有得到你的输出。对我来说,我显示的输出与我得到的完全一样
    猜你喜欢
    • 2021-12-01
    • 2019-09-14
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多