【问题标题】:Get all the combinations of a given set of elements with permutation in r获取给定一组元素的所有组合,并在 r 中排列
【发布时间】:2020-06-09 18:23:59
【问题描述】:

我有两个参数(比如“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")

谢谢。

【问题讨论】:

  • 你的意思是expand.grid(effects, effects)
  • @DarrenTsai,是的,这可能是一个选择。但我需要一种方法来避免在“效果”向量中写下所有交互。
  • 预期输出是多少?你需要crossing(effects, effects1 = effects)
  • @GregorThomas,是的,这是真的。输入应为c("PD", "MO", "K")。确切地。 “排列”代码正在工作。我需要的输出是我获得的输出。但问题实际上在于输入。
  • @GregorThomas,这是真的。感谢您的提醒。

标签: r dataframe permutation


【解决方案1】:

我们可以得到vector ('v1') 的combnations 循环中的 1 到 3 'm' (lapply),paste 它们到单个字符串 (toString) , unlist, replicate 两次变成list 并在上面应用expand.grid

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

数据

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

【讨论】:

  • 这是一个非常好的解决方案
猜你喜欢
  • 2015-01-26
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多