不同向量R的子集

时间:2018-08-24 16:17:32

标签: r

我有三个向量,如下所示。

q = c("a == 1", "a == 2", "a == 3")
w = c("b >= 50", "b >= 100")
t = c("c >= 40 & c <= 80", "c > 80")

我希望能够将所有向量组合成一个大向量,以便每个可能的子集都在一个更大的向量中。例如,我想拥有

("a == 1 & b >= 50", "a == 1 & b >= 100", "a ==2 & b >=50",
"a == 2 & b >= 100", "a == 3 & b >= 50", "a == 3 & b >= 100",
"a ==1 & c >= 40 & c <= 80", "a ==1 & c > 80",
"a ==2 & c >= 40 & c <= 80", "a ==2 & c > 80",
"a ==3 & c >= 40 & c <= 80", "a ==3 & c > 80",
"b  >= 50 & c >= 40 & c <= 80", "b >= 50 & c > 80",
"b  >= 100 & c >= 40 & c <= 80", "b >= 100 & c > 80", 
"a == 1 & b >= 50 & c >= 40 & c <= 80", "a == 1 & b >=50 & c > 80",
"a == 2 & b >= 50 & c >= 40 & c <= 80", "a == 2 & b >=50 & c > 80",
"a == 3 & b >= 50 & c >= 40 & c <= 80", "a == 3 & b >=50 & c > 80")
"a == 2 & b >= 100 & c >= 40 & c <= 80", "a == 2 & b >=100 & c > 80",
"a == 3 & b >= 100 & c >= 40 & c <= 80", "a == 3 & b >=100 & c > 80")

因此,我需要创建每个子集并将其与“&”符号相连,但我不想比较同一向量中的任何元素。在此示例中,我也有三个向量,但是向量的数量应该是可变的。有谁知道如何实现这一目标?谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以使用expand.gridcombn创建字符串。创建combn('lst')个元素中的一个list,并在list中选择2或3(使用lapply),将list元素展开为{ {1}}和data.framepaste(将do.call指定为sep

" & "