1

私は、世界指数 (acw と表示) ポートフォリオと国別指数ポートフォリオ (chi と表示) の対数収益率を計算しようとしました。世界のインデックスは機能しますが、国のインデックスでは「負の添え字と混合できるのは 0 のみです」というエラーが表示されます。データを精査しましたが、ゼロや負の数値は含まれていません。私はそれを解決しようとして気が狂います。私は初めてRを学んでいるので、おそらく非常に基本的な問題ですが、オンラインのどこにも答えが見つかりません。ここにコードがあります、

> data <- read.table("C:/Documents and Settings/Emma/My Documents/data.csv",header=T,sep=",")
> data <- data.frame(data)

> td<-length(data$date)
> t<-td-1

> acwr<-250*log(data$acw[2:td]/data$acw[1:(td-1)])
> chir<-250*log(data$chi[2:td]/data$chi[1:(td-1)])
Error in data$chi[1:(td - 1)] : 
  only 0's may be mixed with negative subscripts
> traceback()
No traceback available 

アドバイスや助けをいただければ幸いです。

4

1 に答える 1

2

もちろん全て推測に基づく話ですが…

しかし、私は思います....

dateデータに列がありません。あなたの根本的な失敗はこれをチェックしていません。

したがってtd、ゼロです。あなたの2番目の失敗はこれをチェックしていません。

次に、 subscript を試しますdata$acw[1:(td-1)]。これは、エラーを返さないという点で機能します。しかし、あなたはこれをチェックしていません。データに列がないため、NULLが返されると思いacwます。NULLdata$acwも同様で、R はユーザーが NULL をサブセット化しようとしても気にしません。NULL が返されます。あなたの3番目の失敗はこれをチェックしていません。

次に、 subscript を試しますdata$chi[1:(td-1)]data$chi存在するため、これは失敗します。

> 1:(td-1)
[1]  1  0 -1

したがって、添え字には +1 と -1 が含まれています。

R 添え字では、これは要素 1 ではなく要素 1 を取得することを意味します (ゼロは無関係です)。だから失敗する。

summary(data)あなたがデータファイルを作成したり、私たちに見せたりすれば、これはすべて明らかだったでしょう. あなたがこれらのことを私たちに見せてくれるまでは、現時点では憶測にすぎません.20分節約できたでしょう.

R を要素に分解してみて、それらがすべて期待どおりであることを確認してください。インタープリター言語である R を使用すると、これを簡単に行うことができます。

もちろん、実際にすべきことは、要素の長さをチェックしてデータフレームの行数を取得することではありませんdata$date. そのnrowための関数があります。

于 2012-09-16T07:58:15.753 に答える