Ich versuche, mit einer for-Schleife neue Spalten in einem neuen Datenrahmen zu drucken. Ich habe die for-Schleifen gebaut und sie dazu gebracht, das zu drucken, was ich in der Konsole möchte, aber ich habe eine höllische Zeit, diese Ergebnisse in einen neuen Datenrahmen zu übertragen. Ich habe versucht, eine leere Matrix mit der richtigen Anzahl von Zeilen zu erstellen, mit dem Ziel, die Matrix nach der Ausführung der for-Schleife in einen Datenrahmen zu konvertieren, aber ich habe es nicht zum Laufen gebracht - ich kann den richtigen Code darin nicht herausfinden die for-Schleife, um die Ergebnisse in die Matrix zu übertragen. Ich füge den fehlgeschlagenen Code hier nicht ein, ich denke, ich muss einen neuen beginnen. Hier ist mein Code
a <- 2019
z <- 2023
#print each year 12 times
for(i in a:z){
print(i);print(i);print(i);print(i);print(i);print(i);
print(i);print(i);print(i);print(i);print(i);print(i)
}
#print the sequence 1:12 the number of times that there are years
for(i in a:z) {
for(i in 1:12) {
print(i)}}
Mein Ziel hier ist eine Spalte mit jedem Jahr, die 12 Mal gedruckt wird, und eine zweite Spalte mit jedem Monat, wie hier mit einem Jahr gezeigt:
example <- data.frame(yr=c(2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019,2019),m=c(1,2,3,4,5,6,7,8,9,10,11,12))
Danke euch allen!
Sie können verwenden expand.grid
data <- expand.grid(yr = 2019:2023, m = 1:12)
# yr m
#1 2019 1
#2 2020 1
#3 2021 1
#4 2022 1
#5 2023 1
#6 2019 2
#7 2020 2
#8 2021 2
#9 2022 2
#10 2023 2
#....
tidyr
hat auch einige optionen:
tidyr::expand_grid(yr = 2019:2023, m = 1:12)
und
tidyr::crossing(yr = 2019:2023, m = 1:12)
Das Wachsen eines Datenrahmens in einer Schleife ist sehr ineffizient, daher wird die Verwendung einer for
Schleife nicht empfohlen, aber wenn wir dies zu Lernzwecken tun möchten, können wir Folgendes tun:
x <- 2019:2023
y <- 1:12
df <- data.frame(matrix(0, nrow = length(x) * length(y), ncol = 2,
dimnames = list(NULL, c('yr', 'm'))))
count <- 1
for(i in x){
for(j in y) {
df[count, ] <- c(i, j)
count <- count + 1
}
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen