我有以下嵌套循環:遍歷向量的笛卡爾積
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'將字符串轉換爲數字值。但只要您只使用數字矢量,就沒有問題。 –