簡體   English   中英

為什么在矩陣上的R中使用diff時出現錯誤

[英]Why do I get error when using diff in R on matrix

我使用csv文件讀取數據

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

數據已正確讀取,並具有帶有標題的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

此處的關鍵(以及您的問題)是,雖然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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM