首页 > 解决方案 > 获取给定一组元素的所有组合,并在 r 中排列

问题描述

我有两个参数(比如“A”和“B”),需要针对单独或组合应用的一组治疗(“PD”、“MO”、“K”)进行测试,除了没有任何治疗 (”。”)。我需要获得影响参数“A”和“B”的所有可能的治疗组合。我带来了一种非常基本的方法来做到这一点,但我需要一种更有效的方法来做到这一点,因为有很多治疗方法。

这是我可重现的例子

effects <- c(".", "PD", "MO", "PD,MO", "K", "K,PD", "K,MO", "K,PD,MO")

res.perm <- permutations(n = 8, r = 2, v = effects, repeats.allowed = TRUE)
print(res.perm, quote = FALSE)

这就是我得到的

在此处输入图像描述

......

在此处输入图像描述

如果有人可以提供更优雅或更聪明的方式来做到这一点,那就太好了。我实际需要使用的输入是V1 = c("PD", "MO", "K")

谢谢。

标签: rdataframepermutation

解决方案


我们可以在一个循环 ( )中获得 1 到 3 'm'combn的 ('v1') 的ations,将它们转换为单个字符串 ( ),将它两次转换为 a并应用于它vectorlapplypastetoStringunlistreplicatelistexpand.grid

expand.grid(replicate(2, unlist(c(".", lapply(1:3, 
  function(i) combn(v1, i, FUN = toString)))), simplify = FALSE))

数据

v1 <- c("PD", "MO", "K")

推荐阅读