我有以下嵌套循环:遍历向量的笛卡尔积
for (x in xs) {
for (y in ys) {
# Do something with x and y
}
}
其中我想拉平,所以我想建立两个向量xs
和ys
的笛卡尔乘积并遍历结果。在Python中,这将是微不足道的:
for xy in product(xs, ys):
# x, y = xy[0], xy[1]
但在R,我发现最简单的等同相当严峻:
xys <- expand.grid(xs, ys)
for (i in 1 : nrow(xys)) {
xy <- as.vector(xys[i, ])
# x <- xy[1], y <- xy[2]
}
当然必须有一个更好的办法,不是吗? (为了澄清,我不想遍历索引 ...我认为必须有一种方法可以直接迭代产品中的元组。)
@Konrad Rudolph:我放弃了我的答案。它没有错。我不确定它是否完全是您寻找的解决方案。 @flodel正确地说明了在混合输入类型中使用'apply'的问题。在这种情况下,您可以使用'as.numeric'将字符串转换为数字值。但只要您只使用数字矢量,就没有问题。 –