2017-11-23 7 views
0

私はRで始めるばかりです。ベクターdvastがあります。 dには1000の値があり、それぞれ0〜100です。私は、dからvastまでのと同じ順序で、< 30という値を追加する必要があります。ここで私がやろうとしているものです:私はvastをプリントアウトした場合ベクトルからベクトルへの特定の値の加算

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

すべての必要な値を持っているようだが、それは受け入れられません。私はここで何か間違っていますか?または、これを達成するためのより簡単な方法がありますか?

+0

ちょうど '広大な< - d [d <30]'ではないのですか?あなたがRで直感的でなければならない何かのためのループを書いていることが分かったら、やめてください。ループなしでやり遂げる可能性があります。 – thelatemail

+0

最短は 'd [d <30]' – Heikki

答えて

1
for(i in d){ 

上記が問題です。代わりに次のように使用する必要があります。

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

dは40,20,6で始まります。あなたはd[40]、次にd[20]などを見ているので、間違った順序で番号を追加しています。1:length(d)を使用すると、正しい順序でベクトルをスキャンします。

関連する問題