在R中以条件生产的组合

时间:2015-03-15 17:11:10

标签: r combinations

嗨我有4个字符串来执行组合 - 1)PES 2)PEA 3)PAL 4)PSL

我必须编写一个脚本来执行组合(组合 - ncr公式),这样我只需要与以下算法组合

If I have PAL in the combination output then keep PAL only and remove other string (PEA,PES,PSL) for egs if I have one of combination as PAL PSL then I only need PAL in output which I think will be in data frame format.

如果我的输出中有PEA而不是PAL,那么只保留PEA而不包括其他(PES和PSL),例如,如果我有像PEA PSL这样的组合,那么我的输出中只需要PEA

所有都是字符串

结果 - 1)PAL 2)PEA 3)PSL + PES

1 个答案:

答案 0 :(得分:1)

这将返回大小为4到1的组合,并从任何具有PAL的PAL中移除非PAL项目。它使用combn函数返回特定大小的组合集:

lapply( lapply(1:4 , combn, x=strings), # modify if smaller set of sizes needed
  function(cx){
  apply(cx, 2, function(col) if( any(col=="PAL") ) {"PAL"} else { paste( col ) } ) } )

我们不清楚您希望如何将这些内容传递出去,因为将它们返回到数据帧"没有多大意义,因为它们的长度各不相同。

[[1]]
[1] "PES" "PEA" "PAL" "PSL"

[[2]]
[[2]][[1]]
[1] "PES" "PEA"

[[2]][[2]]
[1] "PAL"

[[2]][[3]]
[1] "PES" "PSL"

[[2]][[4]]
[1] "PAL"

[[2]][[5]]
[1] "PEA" "PSL"

[[2]][[6]]
[1] "PAL"


[[3]]
[[3]][[1]]
[1] "PAL"

[[3]][[2]]
[1] "PES" "PEA" "PSL"

[[3]][[3]]
[1] "PAL"

[[3]][[4]]
[1] "PAL"


[[4]]
[1] "PAL"