2017-11-23 3 views
0

Ich fange gerade mit R. Ich muss Vektoren, d und vast. d hat 1000 Werte, jeweils zwischen 0-100. Ich muss Werte hinzufügen, die < 30 von d zu vast in der gleichen Reihenfolge wie in d sind. Hier ist, was ich versuche zu tun:Hinzufügen bestimmter Werte von Vektor zu Vektor

vast = c() 
for(i in d){ 
    if(d[i]<30){ 
    vast <- c(vast, d[i]) 
    } 
} 

Wenn ich vast auszudrucken es alle benötigten Werte zu haben scheint, aber es wird nicht akzeptiert. Mache ich hier etwas falsch? Oder gibt es einfachere Wege, dies zu erreichen?

+0

Nur 'riesige <- d [d <30]' ist es nicht? Wenn Sie jemals eine Schleife für etwas finden, das in R geradlinig sein sollte, hören Sie auf. Chancen gibt es eine Möglichkeit, es ohne eine Schleife zu tun. – thelatemail

+0

Kürzeste könnte 'd [d <30]' sein – Heikki

Antwort

1
for(i in d){ 

Das obige ist das Problem. Sie sollten stattdessen folgenden verwenden:

for(i in 1:length(d)){ 

Sagen wir, d beginnt mit 40,20,6. Sie fügen die Zahlen in der falschen Reihenfolge hinzu, weil Sie d[40], dann d[20] usw. betrachten. Wenn Sie 1:length(d) verwenden, scannen Sie Ihren Vektor in der richtigen Reihenfolge.