Ho il seguente ciclo nidificato:iterare su prodotto cartesiano di vettori
for (x in xs) {
for (y in ys) {
# Do something with x and y
}
}
Quale mi piacerebbe appiattire così ho pensato di costruire un prodotto cartesiano dei due vettori xs
e ys
e l'iterazione sul risultato . In Python, questo sarebbe banale:
for xy in product(xs, ys):
# x, y = xy[0], xy[1]
Ma in R, l'equivalente più semplice che ho trovato sembra scoraggiante:
xys <- expand.grid(xs, ys)
for (i in 1 : nrow(xys)) {
xy <- as.vector(xys[i, ])
# x <- xy[1], y <- xy[2]
}
Sicuramente ci deve essere un modo migliore, no? (Per chiarire, io non voglio iterare su un indice di ... Penso che ci deve essere un modo per scorrere direttamente sopra le tuple nel prodotto.)
@Konrad Rudolph: non ho cancellato la mia risposta. Non c'era niente di sbagliato in questo. Non ero sicuro se fosse esattamente la soluzione che cercavi. @flodel ha ragione sui problemi usando 'apply' con tipi di input misti. In questo caso, puoi usare 'as.numeric' per trasformare una stringa in un valore numerico. Ma non ci sono problemi se si utilizzano solo vettori numerici. –