R 如何在xts中减去行

R 如何在xts中减去行,r,xts,quantmod,R,Xts,Quantmod,我正在使用quantmod,我需要找出今天收盘价和第50天收盘价之间的差异 我试过这样做 library(quantmod) tickers = 'AAPL' symbol = getSymbols(tickers,from="2014-04-01",auto.assign=F) change =(tail(Cl(symbol), 50)[1]-tail(Cl(symbol), 1)[1]) change 但是我不能减去它得到这个误差 Data: numeric(0) Index: num

我正在使用quantmod,我需要找出今天收盘价和第50天收盘价之间的差异

我试过这样做

library(quantmod) 
tickers = 'AAPL'
symbol = getSymbols(tickers,from="2014-04-01",auto.assign=F)
change =(tail(Cl(symbol), 50)[1]-tail(Cl(symbol), 1)[1])
change
但是我不能减去它得到这个误差

Data:
numeric(0)

Index:
numeric(0)

对于xts对象,二进制数学运算符和逻辑运算符总是在执行操作之前按索引将两个对象对齐。因此,如果希望在不同时间戳的观测值上使用这些运算符,则需要使用
lag
来适当地对齐索引值

require(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)
x$diff50 <- lag(x$Close, 50) - x$Close

在hasTsp(x)中获取此错误
错误:尝试将属性设置为NULL
。为了获得更多信息,我添加了code@Eka:使用CRAN和GitHub中的quantmod和xts,您问题中的代码对我来说效果很好。请在您的问题中编辑
sessionInfo()
traceback()
(在抛出错误的行之后)的输出。这是代码
符号$diff50
滞后。默认值
在不应该调度时被调度。这可能是因为附加了dplyr,它屏蔽了
stats::lag
,并中断了方法调度。
nr <- nrow(symbol)
change <- coredata(Cl(symbol)[nr-50]) - Cl(symbol)[nr]