【问题标题】:R combination subsetR组合子集
【发布时间】:2015-08-23 20:36:00
【问题描述】:

我有如下数据。我想获得 2 和 5 个元素的所有子集(元素的顺序不重要)。

在下面的例子中,因为有 8 个元素 - 总共有 28 个元素的组合和 5 个元素的 56 个组合是可能的。如何获取每个子集中的元素列表?

element_list =c(0,1,3,4,2,2,7,4)

【问题讨论】:

  • 有什么你已经尝试过的吗?另外:我不确定我是否理解正确,但搜索 "Permutation" 可能会有所帮助。

标签: r combinations


【解决方案1】:

您想使用combn,迭代我们选择为2和5的m

combos <- lapply(c(2, 5), combn, x = element_list, simplify = FALSE)
lengths(combos)
# [1] 28 56

或删除 simplify 参数以返回矩阵列表。

【讨论】:

  • 我尝试com=as.data.frame(combos[[2]]) 保存 5 个元素的组合。但是每个组合都保存为一列。有没有更简单的方法来连续保存每个组合?
  • 如果您使用的是combos,可能类似于do.call(rbind, lapply(combs[[2]], function(x) setNames(as.data.frame.list(x), 1:5)))。否则只需as.data.frame(t(combos[[2]]))
  • 如果你用simplify = FALSE其实就是as.data.frame(do.call(rbind, combos[[2]]))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多