0

を使用してcsvファイルからデータを読み込みます

d<-read.csv("myfile.csv",header=TRUE)

データは正しく読み取られ、ヘッダー付きのdoubleデータが10列あります。

対数の差の行列(私の言葉-Rで実際に何が必要かわからない)を作成したいと思います。

logs<-log(d)

これは問題なく動作しますが

diffs<-diff(logs)

このエラーが発生します:

-(length(r)--lag + 1L)<<<それが何を意味するのかわかりません...

編集1私のデータ(申し訳ありませんが、ここに入力する必要がありました-ファイルを添付する明確な方法がわかりません)

A,B,C
1.1,2.1,3.1
1.2,2.2,3.2
1.3,2.3,3.3
1.4,2.4,3.4
1.5,2.5,3.5
1.6,2.6,3.6
4

1 に答える 1

5

ここでの重要な点(そしてあなたの問題)は、diff(驚いたことに)行列では自動的に列単位で機能しますが、データフレームでは機能しないということです。これは、行列から得られるものであり、行列とは微妙に異なります。read.csv

d <- read.csv(textConnection("
A,B,C
1.1,2.1,3.1
1.2,2.2,3.2
1.3,2.3,3.3
1.4,2.4,3.4
1.5,2.5,3.5
1.6,2.6,3.6"))
(logs <- log(d))
diff(logs)
Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] : 
  non-numeric argument to binary operator

diff(as.matrix(logs))

私の最初の答えはあなたが使うべきだということでした

apply(logs,2,diff)

diff各列で明示的に使用します。ただし、から?diff

x:差分する値を含む数値ベクトルまたは行列。...'x'が行列の場合、差分演算は各列で個別に実行されます。

diff(c(as.matrix(logs)))全体を単一の連続した(列順の)ベクトルとして扱いたい場合にも実行できます。

于 2012-12-05T15:17:39.857 に答える