繁体   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