时间序列,变量参数为列表列

时间:2017-11-16 15:53:34

标签: r tidyverse mutate tibble

我有一个列alpha的字节表示AR1进程的参数:

df = data_frame(alpha = seq(-.5, .5, .1))

现在,对于alpha的每个值,我想对长度为100的AR1进程进行采样,并将进程添加到df作为列表列。 以下不起作用:

df %>% mutate(ar1 = list(arima.sim(n=100, model=list(ar=alpha))))

新列ar1的每个元素都是完全相同的过程。如何确保列ar1的每个元素都是具有相应参数alpha的AR1流程的实现?

1 个答案:

答案 0 :(得分:1)

您可以使用lapply

library(dplyr)
df = data_frame(alpha = seq(-.5, .5, .1))

df = df %>% 
  mutate(ar1 = lapply(alpha, function(x) arima.sim(n=100, model=list(ar=x))))

或来自map的{​​{1}}:

purrr

<强>结果:

df = df %>% 
  mutate(ar1 = purrr::map(alpha, ~ arima.sim(n=100, model=list(ar=.))))