【发布时间】:2021-11-10 09:14:29
【问题描述】:
假设我有一个向量vec <- c("H", "H", "H", "H", "M", "M", "A", "A")
如果我例如如何获得所有组合/排列使用预期的输出从 8 个中抽取 5 个。
> head(t, 6)
[,1] [,2] [,3] [,4] [,5]
[1,] "H" "H" "H" "H" "M"
[2,] "H" "H" "H" "H" "M"
[3,] "H" "H" "H" "H" "A"
[4,] "H" "H" "H" "H" "A"
[5,] "H" "H" "H" "M" "M"
[6,] "H" "H" "H" "M" "A"
我尝试了gtools::combinations(),但我总是收到错误,即不同元素太少(gtools::permutations() 也是如此,无论是否允许重复。
所以我很费力地做到了
t <- gtools::combinations(8, 5, vec, repeats.allowed = F)
Error in gtools::combinations(8, 5, vec, repeats.allowed = F) :
too few different elements
t <- gtools::combinations(8, 5, letters[1:8], repeats.allowed = F)
for ( i in 1:8) {
if ( i <=4 ) {
t[t == letters[i]] <- "H"
} else if (i <= 6) {
t[t == letters[i]] <- "M"
} else if (i <= 8) {
t[t == letters[i]] <- "A"
}
}
我正在从任何包或基础 R 中寻找更简单的解决方案,并想知道为什么它不起作用。提前致谢。
【问题讨论】:
标签: r combinations permutation