Ich versuche, die folgenden durch die Verwendung für und verschachtelt, wenn in r zu lösen: meine Daten für Preis verfügbar: test20 insbesondere um Austausch mit geschachtelten wenn und Schleife in r
test2 <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 399, 0, 0, 399, 0, 0, 0, 0, 399, 0, 0, 0, 0, 429, 0, 429,
0, 0, 0, 499, 0, 429, 0, 0, 0, 0, 0, 529, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0)
das Problem: 0 vor dem ersten Auftreten des Preises mit dem Wert des ersten Auftretens zu ersetzen, dann 0 nach dem ersten Auftreten mit dem Wert des ersten Auftretens bis zum zweiten Auftreten des Preises und so weiter zu ersetzen. Die 0 nach dem letzten Auftreten des Preises sollte durch den Wert des letzten Auftretens ersetzt werden.
Ich habe den folgenden Code verwendet:
priceposition2 <- which(test2>0)
for(i in 1:length(priceposition2)){
for(m in 1:length(test2)){
if (m <= priceposition2[1]){
test2[m] <- test2[priceposition2[1]]
} else if (m > priceposition2[1]){
if (m> priceposition2[i] && m < priceposition2[i+1]){
test2[m] <- test2[priceposition2[i]]
}else if(m> priceposition2[length(priceposition2)]){
test2[m] <- test2[priceposition2[length(priceposition2)]]
}
}
m=m+1
}
i=i+1
}
ich folgendes Ergebnis danach erhalten:
[1] 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399
399 399 399 399 399
[24] 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399
399 399 399 399 399
[47] 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399 399
399 399 399 399 399 399
[70] 399 399 399 399 399 399 399 399 429 429 429 429 429 429 499 499 429 429
429 429 429 429 529
[93] 529 529 529 529 529 529 529 529 529 529 529 529 529 529 529 529 529 529
529 529 529 529 529
[116] 529 529 529 529 529 529 529 529 529 529 529 529 529 529
das ist genau das, was ich will. Das Problem ist, ich Fehler erhalten, indem Sie den obigen Code verwenden:
Error in if (m > priceposition2[i] && m < priceposition2[i + 1]) { :
missing value where TRUE/FALSE needed
Gibt es etwas, das ich falsch mache? Gibt es auch eine Alternative mit Apply-Familie für das oben genannte Problem?
plese Verwendung dput(), um Ihre Daten zu teilen –