2016-03-23 6 views
0

Rは変数の値を知っているが、関数内で間違ってそれを適用している以外は何が起きているのかを実際には分かりません。Rインタプリタに障害がありますか?

> n2 
[1] 4 

> rnorm(n2) 
[1] 0.379217 -1.519947 1.602527 

> rnorm(4) 
[1] -0.93154715 -0.82908620 0.55084001 0.09018763 

Rはn2 = 4を知って、それがrnorm(4)に対処するために、何とかrnorm(n2)rnorm(3)として読まれている方法を知っている:これは私の端末から直接コピーされます。

以下は私のフルコードです。私は、問題が発生したループを止めるための警告として警告を解釈するようにRを設定します。これを実行した後にn2の値を確認し、次にrnorm(n2)が何を参照しているかを確認してください。

rm(list = ls()) 
options(warn = 2) 
iterations = 1 
n = 10 
proportions = seq(.3, .7, by = .1) 
#stores 
y = c() 

position = 1 

#set var ratio 
parameter = 1.25 
#loop over proportions 
for(p in proportions){ 
    n1 = p*n 
    n2 = n-n1 
    for(i in 1:iterations){ 
    #new ys 
    newy1 = sqrt(parameter)*rnorm(n1) 
    newy0 = rnorm(n2) 
    newy = c(newy1, newy0) 
    y[position:(position+n-1)] = newy 


    position = position+n 
    } 
} 

私はWindows 7 64ビットでR 3.2.3を実行しています。

ご迷惑をおかけして申し訳ございません。長時間のユーザー、初めてのポスター。このページに来る他に明確にするために

おかげ

+0

SO(およびR)へようこそ!ここで質問するときは、[最小限の質問](http://stackoverflow.com/help/mcve)と[再現可能な例](http://stackoverflow.com/questions/5963269/how-to)を提供することを強くお勧めします。 -make-a-great-r-reproducible-example)である。特に、このような場合には不明確な場合、*期待される出力はどれくらいでしょうか?これは正しく動作しており、少なくとも私にとって直感的に動作しています。 – r2evans

+0

'n2 == 3 'なら' rnorm(3) 'ではなく' rnorm(n2) 'となるでしょうか? – kdopen

+0

申し訳ありませんが、コードを見れば、n2は実際には4です。私は誤ってn2 = 3と言っていました。私はそれを修正した。 – user6106913

答えて

1

:エラーが発生し、上記コード:

Error in y[position:(position + n - 1)] = newy (from #9) : 
    (converted from warning) number of items to replace is not a multiple of replacement length 

割り当ての左側の長さが同じではないからです右:

length(position:(position+n-1)) 
# [1] 10 
length(newy) 
# [1] 9 

newyが短いことが原因になっているものを、コードをバックトレース?

lengths(list(newy1, newy0)) 
# [1] 6 3 
n2 
# [1] 4 

「3」が原因であり、「4」である必要があります。これは非常に特別R FAQ 7.31です:

n2 == 4 
# [1] FALSE 
n2 - 4 
# [1] -8.881784e-16 

おそらく、あなたはn1 = p*nを割り当てるとき(pが小数であるため)roundfloorceilingas.integer、または他のいくつかの機能を使用することを検討すべきです。

この現象の1つの問題は、必ずしも誤って実行するとは限りません。

+0

「ラウンド」を追加すると効率的に解決されます。助けてくれてありがとうございました。回答としてマーク。 – user6106913

関連する問題