【发布时间】:2018-08-24 16:17:31
【问题描述】:
我有如下所示的三个向量。
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")
所以我需要创建每个子集并用“&”符号连接,但我不想比较同一向量中的任何元素。在这个例子中我也有三个向量,但是向量的数量应该是可变的。有谁知道如何实现这一目标?谢谢!
【问题讨论】:
-
你需要
do.call(paste, c(expand.grid(q, w, t), sep = " & ")) -
也可以是
combn(list(q, w, t), 2, FUN = function(x) do.call(paste, c(x, sep = " & ")), simplify = FALSE) -
几乎!我也只需要向量中的 2 个元素。这段代码似乎总是从每个向量中获取 1 个元素,但我也只需要 q 与 w 相比,例如。因此,例如我的示例中的第一个条目“a == 1 & b >= 50”不存在
-
请检查修改后的代码
-
有道理,谢谢!
标签: r