在 R 数据框中创建所有可能的列排列

2024-02-11

我有一个看起来像这样的 df:

   code.1 code.2 code.3 code.4
1:     82     93     NA     NA
2:     15     85     93     NA
3:     93     89     NA     NA
4:     81     NA     NA     NA

我想生成一个新的 df ,它包含所有可能的列排列,因此例如第 5:8 行的值是"code.2, code.3, code.4, code.1",第 9:12 行的值"code.3, code.4, code.1, code.2", 等等。

我已经尝试过 gtools 包中的“排列”,但我不断遇到“v 要么是非原子的,要么太短”


我们可以排列列索引,根据索引选择列,然后组合所有数据框。

library(gtools)

per <- permutations(n = 4, r = 4, repeats.allowed = FALSE)

dat2 <- do.call(rbind, lapply(1:nrow(per), function(x){
  dat_temp <- dat[, per[x, ]]
  names(dat_temp) <- names(dat)
  return(dat_temp)
  }))

head(dat2, 12)
#    code.1 code.2 code.3 code.4
# 1      82     93     NA     NA
# 2      15     85     93     NA
# 3      93     89     NA     NA
# 4      81     NA     NA     NA
# 11     82     93     NA     NA
# 21     15     85     NA     93
# 31     93     89     NA     NA
# 41     81     NA     NA     NA
# 12     82     NA     93     NA
# 22     15     93     85     NA
# 32     93     NA     89     NA
# 42     81     NA     NA     NA

DATA

dat <- read.table(text = "   code.1 code.2 code.3 code.4
1     82     93     NA     NA
2     15     85     93     NA
3     93     89     NA     NA
4     81     NA     NA     NA",
                  header = TRUE, stringsAsFactors = FALSE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 数据框中创建所有可能的列排列 的相关文章

随机推荐