R语言中替代combn生成带顺序的实验组对照组组合的方法
R 生成分组排列/组合的字符串格式结果
你提到的6选3共20种0/1字符串输出,本质是从6个位置中选3个标记为1的组合,仅用基础包的combn函数就能直接实现你要的输出效果,不需要额外替换函数,具体实现如下:
- 完整实现代码
# 生成所有6选3的位置组合,每列对应一组标记为1的位置 comb_index <- combn(6, 3) # 遍历每个组合转换为指定格式的字符串 output <- apply(comb_index, 2, function(idx) { # 初始化全0向量 group_vec <- rep(0, 6) # 选中位置设为1 group_vec[idx] <- 1 # 拼接为字符串 paste(group_vec, collapse = "") }) # 输出结果 print(output) # 验证数量,返回20符合预期 length(output)
如果你确实需要生成考虑顺序的排列结果(即相同3个位置的不同排序算作不同结果,6选3的排列数为120种),可以使用gtools包的permutations函数,示例如下:
# 首次使用先安装包 # install.packages("gtools") library(gtools) # 生成6选3的所有排列 perm_index <- permutations(n = 6, r = 3) # 转换为0/1字符串格式 perm_output <- apply(perm_index, 1, function(idx) { group_vec <- rep(0, 6) group_vec[idx] <- 1 paste(group_vec, collapse = "") })
内容的提问来源于stack exchange,提问作者ppotatomato
相关产品推荐
相关产品推荐

