2017-02-16 8 views
0

質問は次のとおりです。数値ベクトルを取る関数を作成します。出力は、平均値を実行するベクトルでなければなりません。出力ベクトルのi番目の要素は、入力ベクトルの1からiまでの値の平均でなければなりません。私はそれで何か問題がなければならない知っている関数の助けが必要ですR

x1 <- c(2,4,6,8,10) 
    for (i in 2: length(x1)){ 
     ma <- sum(x1[i-1] , x1[i])/i 
     print(ma) 
     mresult <- rbind(ma) 
    } 
    View(ma) 

私の主な問題点は以下のとおりであるためのループです。しかし、私はそれが何であるか分かりません。

+1

を固定については行くだろうか 'mapply(長さ(×1)::)、1機能(I)の平均(X1 [I 1])してみてくださいmapply'されます。 Rをうまく利用するには、 'apply'関数 – Jean

+1

を学ぶ必要があります。' cumsum(x1)/(1:length(x1)) 'も動作します。 – Jean

+1

誰かがあなたのためにこれをしてくれました:' dplyr :: cummean ' –

答えて

0

気づいたとおり、あなたがしようとしていることを達成するために既に利用可能な機能とパッケージを使用する方が効率的な方法があります。 ? `しかし、ここであなたが`あなたのループ

x1 <- c(2,4,6,8,10) 
mresult = numeric(0) #Initiate mresult. Or maybe you'd want to initiate with 0 
for (i in 2: length(x1)){ 
    ma <- sum(x1[1:i])/i #You were originally dividing the sum of (i-1)th and ith value by i 
    print(ma) #This is optional 
    mresult <- c(mresult,ma) #Since you have only an array, there is no need to rbind 
} 
View(ma) #The last computed average 
View(mresult) #All averages 
+0

ありがとう!私のコードをあなたのものと比較して見直した後、私はついに私が間違っていた理由を見つけました。とても有難い! – SeanZ

関連する問題