2 Stimmen

Optimale Zuweisung von Werten in einer for-Schleife an Vektor

Ich habe Code geschrieben, um eine Sequenz von Werten zu generieren A01, A02, A03, A04, A05, B01, B02, ..., G04, G05. Ich weiß, dass wir in R normalerweise keine for-Schleifen verwenden. Dieser Code funktioniert, aber ist es der beste Weg, dieses Problem zu lösen?

letters <- c("A", "B", "C", "D", "E", "F", "G")
numbers <- c(1:5)
l <- vector()
count <- 1
for(i in letters)
{
    for(j in numbers)
    {
        l[count] <- paste(i, j, sep="")
        count <- count + 1
    }
}

2voto

Die Abneigung gegenüber Schleifen in R ist etwas übertrieben. Wenn Sie nicht mit übermäßig großen Daten oder komplexen Analysen arbeiten und keine leistungsstarke Code erstellen müssen, können Sie eine Schleife verwenden. Der potenzielle Vorteil einer Schleife besteht darin, dass sie einfach zu schreiben ist, ohne Fehler zu machen, und es ist einfach zu sehen, wie Ihr Code funktioniert, wenn Sie später darauf zurückkommen. Schleifen "kollidieren" etwas mit der Funktionsweise von R unter der Haube, aber für Anfänger ist das nicht wirklich so wichtig. Sie können eine Schleife verwenden, wenn Sie sich damit wohlfühlen.

Andererseits würde ich es nicht auf diese Weise machen. Hier ist eine Möglichkeit, die nicht zu fortgeschritten ist und sauberen Code liefert (siehe ?outer):

l <- outer(LETTERS[1:7], as.character(c(1:5)), FUN=paste, sep="")
l <- as.vector(l)
l
#  [1] "A1" "B1" "C1" "D1" "E1" "F1" "G1" "A2" "B2" "C2" "D2" "E2" "F2" "G2" "A3"
# [16] "B3" "C3" "D3" "E3" "F3" "G3" "A4" "B4" "C4" "D4" "E4" "F4" "G4" "A5" "B5"
# [31] "C5" "D5" "E5" "F5"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X