Ich muss eine Zeichenfolge repliziert Werte erstellen, die Anzahl der Replikate hängt davon ab, bestimmte Bedingungen zu erfüllen. Zum Beispiel (dies ist eine Vereinfachung; die eigentliche Aufgabe und die Bedingungen sind komplizierter):Erstellen Sie eine Zeichenfolge von replizierten Werten mit unterschiedlicher Replikationshäufigkeit in r
Replizieren Sie drei Mal Werte im Bereich 1: 5, mit Ausnahme derjenigen, die ganze Zahlen von 4 sind, die vier Mal repliziert werden.
sollte die Ausgabe wie folgt aussehen: 1 1 1 2 2 2 3 3 3 4 4 4 4 5 5 5
I eine Schleife erstellt, jeden Wert innerhalb des Bereichs zu prüfen:
Hier ich habe:
year<-(1:5)
r2<-NULL
for (x in 1:length(year))
if(is.integer(4)){
r<-rep(year[x],4)
}else{
r<-rep(year[x],3)
}
r2<-c(r2,r)
Aber mir gibt: [1] 5 5 5
es sieht er die outut ist überschrieben werden.
Ich habe auch vor definierende Aufgaben versucht wie folgt:
year<-(1:5)
r<-rep(year[x],4)
r2<-rep(year[x],3)
for (x in 1:length(year))
ifelse(is.integer(4),r,r2)
r3<-c(r2,r)
Was mich geben wird: [1] 5 5 5 5 5 5 5
Aber es erkennt nicht den Zustand und scheint beide Optionen für den gleichen Wert zu akzeptieren und die Ausgabe zu überschreiben.
Ich bin mir sicher, dass das sehr einfach ist, aber ich bin neu im Programmieren und kämpfe immer noch damit. Ich würde mich freuen, wenn mir jemand dabei helfen könnte.
Danke !!
UPDATE (folgende Vorschläge zu den Kommentaren korrigiert):
year<-(1:5)
r2<-NULL
for (x in 1:length(year)){
if(year[x]%%4==0){
r<-rep(year[x],4)
}else{
r<-rep(year[x],3)
}
r2<-c(r2,r)
}
Es funktioniert !! Vielen Dank!
Vielen Dank für Ihre schnelle Antwort! Ich kann nicht, weil dies nicht die tatsächlichen Werte sind. Ich versuche, einen Code zu generieren, der mir 365 Einträge pro Jahr gibt, mit Ausnahme von denen, die die Bedingungen von Schaltjahren erfüllen, die 366 Einträge haben werden. Die Zeiträume können 2500 bis 4000 Jahre umfassen, so dass der Bereich beispielsweise 1: 2050 betragen kann. – EBB