【发布时间】:2023-03-12 20:36:01
【问题描述】:
我一直在尝试创建向量,其中每个元素可以采用两个不同向量中存在的两个不同值。
例如,如果有两个向量 a 和 b,其中 a 是 c(6,2,9),b 是 c(12,5,15),那么输出应该是 8 个向量,如下所示,
6 2 9
6 2 15
6 5 9
6 5 15
12 2 9
12 2 15
12 5 9
12 5 15
以下代码有效,
aa1 <- c(6,12)
aa2 <- c(2,5)
aa3 <- c(9,15)
for(a1 in 1:2)
for(a2 in 1:2)
for(a3 in 1:2)
{
v <- c(aa1[a1],aa2[a2],aa3[a3])
print(v)
}
但我想知道是否有更简单的方法来做到这一点,而不是编写几个 for 循环,这些循环也会随着最终向量的元素数量线性增加。
【问题讨论】:
-
expand.grid(Map(c, a, b))或者更透明,library(purrr) ; list(a, b) %>% transpose() %>% expand.grid() -
@alistaire - 你应该把它作为答案 - 第一个非常聪明和简洁。