您的位置:首页 > 其它

R语言学习-问题解决-Error in `[<-.ts`(`*tmp*`,...only replacement of elements is allowed

2017-07-05 10:55 441 查看
在输出时间序列结果的时候,出现以下问题:

for (n in 0:99)
{
salesTS <-ts(src_dat$rate_m[(1+24*n):(24*n+24)],frequency=12,start=c(2015,1,1))
salesForecasts<- HoltWinters(salesTS)
salesForecast2<- forecast:::forecast.HoltWinters(salesForecasts,h=12)
output <- rbind(output,data.frame(prd_code=src_dat$prod_no[(1+24*n)],year="2017",month=seq(1:12),rate=salesForecast2$mean)  )
}
Error in `[<-.ts`(`*tmp*`, ri, value = c(2.7110254334953, 2.95418132827278,  :
only replacement of elements is allowed
提示rbind的时候出错,分别查看rbind两端的数据

> output
prd_code year month     rate
1  13213798874 2017     1 2.711025
2  13213798874 2017     2 2.954181
3  13213798874 2017     3 2.561491
4  13213798874 2017     4 2.313876
5  13213798874 2017     5 1.948865
6  13213798874 2017     6 1.329617
7  13213798874 2017     7 2.550668
8  13213798874 2017     8 2.089158
9  13213798874 2017     9 1.909078
10 13213798874 2017    10 2.006295
11 13213798874 2017    11 1.941801
12 13213798874 2017    12 1.855000
> tmp<-data.frame(prd_code=src_dat$prod_no[(1+24*n)],year="2017",month=seq(1:12),rate=salesForecast2$mean)
> tmp
prd_code year month     rate
1  13213818469 2017     1 2.711025
2  13213818469 2017     2 2.954181
3  13213818469 2017     3 2.561491
4  13213818469 2017     4 2.313876
5  13213818469 2017     5 1.948865
6  13213818469 2017     6 1.329617
7  13213818469 2017     7 2.550668
8  13213818469 2017     8 2.089158
9  13213818469 2017     9 1.909078
10 13213818469 2017    10 2.006295
11 13213818469 2017    11 1.941801
12 13213818469 2017    12 1.855000
显示并没有什么问题,那么分析下各个列的属性

> class(output)
[1] "data.frame"
> str(output)
'data.frame':	12 obs. of  4 variables:
$ prd_code: num  1.32e+10 1.32e+10 1.32e+10 1.32e+10 1.32e+10 ...
$ year    : Factor w/ 1 level "2017": 1 1 1 1 1 1 1 1 1 1 ...
$ month   : int  1 2 3 4 5 6 7 8 9 10 ...
$ rate    : Time-Series  from 2017 to 2018: 2.71 2.95 2.56 2.31 1.95 ...
> class(tmp)
[1] "data.frame"
> str(tmp)
'data.frame':	12 obs. of  4 variables:
$ prd_code: num  1.32e+10 1.32e+10 1.32e+10 1.32e+10 1.32e+10 ...
$ year    : Factor w/ 1 level "2017": 1 1 1 1 1 1 1 1 1 1 ...
$ month   : int  1 2 3 4 5 6 7 8 9 10 ...
$ rate    : Time-Series  from 2017 to 2018: 2.71 2.95 2.56 2.31 1.95 ...


这个类型前所未见,查后得知是时间序列类型,附带时间属性。现在我并不需要它的时间,因此用as.numeric()做一个强制转换:

output <- rbind(output,data.frame(prd_code=src_dat$prod_no[(1+24*n)],year="2017",month=seq(1:12),rate=as.numeric(salesForecast2$mean)) )
问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  r语言 问题解决
相关文章推荐