【问题标题】:How to get all possible combination of column from the data frame?如何从数据框中获取所有可能的列组合?
【发布时间】:2017-11-16 13:52:01
【问题描述】:
R> set.seed(123)
R> data <- matrix(rnorm(6),3,10)
R> colnames(data) <- c("s1","s2","s3","s4","s5","s6","s7","s8","s9","s10")
R> print(data)

sorry, I don't know how to show the print

我想通过 R 包从数据框中获取所有可能的列组合?时间越短越好

结果是这样的,

All possible two pair combination
column S1 and S2
column S2 and S3
column S3 and S4
...

all possible three pair combination
column S1, S2 and S3
column S2, S3 and S4
column S3, S4 and S5
...

【问题讨论】:

  • 你想要一个包含 100 个 data.frames 的列表和一个包含 1000 个 data.frames 的列表?

标签: r package combinations


【解决方案1】:

我已经做了一个函数来做这个,只要我需要它就派上用场:

make_combinations <- function(x) {

  l <- length(x)
  mylist <- lapply(2:l, function(y) {
    combn(x, y, simplify = FALSE)
  })
  mylist

}


results <- make_combinations(colnames(data))
results[[1]]
# [[1]]
# [1] "s1" "s2"
# 
# [[2]]
# [1] "s1" "s3"
# 
# [[3]]
# [1] "s1" "s4"
# 
# [[4]]
# [1] "s1" "s5"
# 
# [[5]]
# [1] "s1" "s6"
# 
# [[6]]
# [1] "s1" "s7"
#and so on...

函数输出一个列表,其中每个元素都是另一个列表,包含所有 2-way、3-way、4-way... 组合。在您的情况下,它有 9 个元素,从 2 路组合一直到 10 路组合。

【讨论】:

  • 我。太好了。我还有一个问题。我想输出列数据,而不仅仅是列名。你有什么主意吗?谢谢!
  • 您可以遍历列表(在您使用unlist(mylist, recursive = FALSE) 取消列表并将data.frame 子集化后,即data[, mylist[[i]]]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
  • 2017-09-06
相关资源
最近更新 更多