我有rollmean函数的Integer溢出错误。当我在5个数字部分进行操作但没有在20(和260)个数字部分上工作时,它运行良好。
数字是交易量(7位数)。
你有什么线索可以解决这个问题吗?
感谢
SP_stock$mean_vol_20<-ave(SP_stock$vol, SP_stock$ticker, FUN=function(x) rollmean(x,k=20, na.pad=T, align="right"))
Error: In sum(xu[1:k]) : dépassement d'entier - utiliser sum(as.numeric(.))
Error: In sum(xu[1:k]) : Integer overflow - use sum(as.numeric(.))
答案 0 :(得分:1)
您的问题的线索已在错误消息中。您必须在numeric
提供rollmean
输入,而不是integer
输入,因为当sum
为整数时,中间计算(x
)会溢出。
在你的情况下,做:
ave(as.numeric(SP_stock$vol), SP_stock$ticker, FUN = ...)
应该有用。