![](/img/trans.png)
[英]Why do I get address must be a character error when I call this api using R?
[英]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.