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()
との組み合わせ
これは必要ありません。正しく印刷されます。それがなければ、リスト列は完全に印刷されます(ではなく)。しかし、良い思い出 - 私はこれを言及するために編集します。 –