4

以下はRで正常に動作します

myarray <- as.array(list(c(5,5), 9, c(4,2,2,4,6)))
mydf    <- as.data.frame(myarray)

しかし、Splusではそうではありません---エラーメッセージを表示します:

Problem in data.frameAux.list(x, na.strings = na.st..: arguments imply differing 
 number of rows: 2, 1, 5 
Use traceback() to see the call stack

Q:どうなっているのですか?これをSplusで機能させるにはどうすればよいですか?

編集:私はなぜ私がalistをとして扱うこの奇妙なプロセスを経験しているのかを明確にする必要がありdata.frameます。それは、私が最終的にSplusで次のようなことをしたいからです。

mypos <- timeSeq("1/1/08", "1/3/08", by = "days")
myts <- timeSeries(data = mydf, positions = mypos)

現時点で実行可能な最善のオプションは、次のようなリストを作成することだと思います。

mytshack <- list(mypos, as.list(myarray))

timeSeriesしかし、これは不格好であり、可能であればの機能を取得したいと思います

4

1 に答える 1

3

コメント後に編集。

SPlusは、Rとは異なり、データフレーム内の値としてベクトルを許可しません。そのためにリストを使用する必要があります。

day <- c("1/1/2000","1/2/2000","1/3/2000")
names(myarray) <- day

これにより、通常の方法でデータにアクセスできます。

> myarray[["1/1/2000"]]
[1] 5 5

これが実際に必要なものであり、データセットに関する追加情報があることを確認したら、これを試してください。

myarray <- as.array(list(c(5,5), 9, c(4,2,2,4,6)))
mydf <- as.matrix(myarray)
colnames(mydf) <- "myarray"


mypos <- timeSeq("1/1/08", "1/3/08", by = "days")
myts <- timeSeries(data = mydf, positions = mypos)
seriesData(myts)

これはSPlusで機能します。timeSeriesには長方形のオブジェクトが必要であり、as.rectangularは配列を処理できません。したがって、行列に変換することで問題ありません。それでも、timeSeriesSPlusで一緒にハッキングするのではなく、Rでパッケージを使用します。

于 2011-03-17T17:01:51.953 に答える