3
날짜가 소비 된 데이터 테이블이 여러 제품으로 있습니다. 각 제품의 예측을 생성했으며 이제 기간 +1에 80 % 이상을 얻고 싶습니다. 문제는 예측 된 개체가 사용 된 방법에 따라 구조가 다른 목록이므로 인덱싱을 통해 값을 검색 할 수 없습니다 (이름 : data.table
). dplyr로 이름 목록에서 추출
# load required libraries
library(data.table)
library(xts)
library(forecast)
library(dplyr)
# create random data
set.seed(1)
a <- data.table(prod = sample(LETTERS[1:5], 20, TRUE), cons = sample(1:50, 20, TRUE), dt = sample(seq(as.Date("2016/06/01"), as.Date("2016/07/27"), by = "day"), 20, FALSE))
# create a time series of purchases
b <- a[, .(C=sum(cons)), by = .(dt, prod)][, x := .(list(xts(x = C, order.by = dt))), by = prod]
b <- b[, .SD[1,], by = prod]
# create a "reference" timeseries
dts <- xts(order.by = seq(as.Date("2016/06/01"), as.Date("2016/07/27"), by = "day"))
# merge reference and calculated timeseries, so zeros appear
b[, x2 := .(list(merge.xts(dts, x[[1]], fill = 0))), by = prod]
# calculate forecast for each extended timeseries
b[, fc := .(list(forecast(x2[[1]]))), by = prod]
가 지금은 평균과 상위을 추출 할 :
이
은 (더미) 데이터와 코드입니다. 문제는 평균 때때로는 목록의 슬롯 2에 위치하고 때로는 그렇지 않기 때문에 이름으로 호출해야합니다.b[, mn := fc[[1]]$mean[1], by = prod]
b[, up := fc[[1]]$upper[1,1], by = prod]
하지만 dplyr
에서 동일 할 시도하면, 그때는 폐쇄 오류 얻을 : data.table
에서 나는 할
b %>% mutate(mnD = .$fc[[1]]$mean[1])
## Error: invalid subscript type 'closure'
b %>% mutate(mnD = fc[[1]]$mean[1])
## Error: invalid subscript type 'closure'
내가 잘못하고있는 중이 야 무엇을하고 어떻게 dplyr
에이를 수 있습니까? 로 작동합니다 purrr
패키지에서 map_dbl()
와 결합
필요가 없습니다. 올바르게 인쇄됩니다. 이를 사용하지 않으면 목록 열이 전체로 인쇄됩니다 ( 대신). 그러나 좋은 알림 - 나는 이것을 언급하기 위해 편집 할 것이다. –