R 以可变参数作为列表列的时间序列
我有一个TIBLE列R 以可变参数作为列表列的时间序列,r,tidyverse,mutate,tibble,R,Tidyverse,Mutate,Tibble,我有一个TIBLE列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的
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进程的实现?您可以使用lappy
:
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
从purr
:
df = df %>%
mutate(ar1 = purrr::map(alpha, ~ arima.sim(n=100, model=list(ar=.))))
结果:
> df
# A tibble: 11 x 2
alpha ar1
<dbl> <list>
1 -0.5 <S3: ts>
2 -0.4 <S3: ts>
3 -0.3 <S3: ts>
4 -0.2 <S3: ts>
5 -0.1 <S3: ts>
6 0.0 <S3: ts>
7 0.1 <S3: ts>
8 0.2 <S3: ts>
9 0.3 <S3: ts>
10 0.4 <S3: ts>
11 0.5 <S3: ts>
> df$ar1 %>% lapply(head)
[[1]]
[1] -0.3514397 0.6665273 0.1932043 -0.5509680 -0.5857840 -0.6412465
[[2]]
[1] -1.3324151 0.9639404 -1.2454844 0.1048227 -0.4667547 1.2749614
[[3]]
[1] -0.2049486 -0.5751628 0.4895776 0.1538311 2.0552770 -1.3351100
[[4]]
[1] -0.1118248 0.4838552 2.7614692 -0.7824381 0.5151733 2.2416832
[[5]]
[1] 1.7293663 0.5335523 -0.4605581 -0.7785337 0.7875933 -0.8702821
[[6]]
[1] 1.15512596 -1.14722217 0.44119379 0.03748791 0.03285100 -0.05754903
[[7]]
[1] 0.5513116 1.4185419 -0.7616093 1.5258314 1.7186733 -0.9435652
[[8]]
[1] -1.0346102 -1.9515274 0.3263094 -0.9846696 -0.1100608 1.2949033
[[9]]
[1] 1.3427732 0.8074878 -2.0393332 -0.0580785 0.9315681 1.1272597
[[10]]
[1] 1.5801751 0.6694740 0.3058637 -0.8653836 0.3402794 1.3181050
[[11]]
[1] 1.7001214 2.8050716 0.6580970 3.0519142 2.3411307 -0.6577423
>df
#一个tibble:11x2
阿尔法ar1
1 -0.5
2 -0.4
3 -0.3
4 -0.2
5 -0.1
6 0.0
7 0.1
8 0.2
9 0.3
10 0.4
11 0.5
>df$ar1%>%lapply(头)
[[1]]
[1] -0.3514397 0.6665273 0.1932043 -0.5509680 -0.5857840 -0.6412465
[[2]]
[1] -1.3324151 0.9639404 -1.2454844 0.1048227 -0.4667547 1.2749614
[[3]]
[1] -0.2049486 -0.5751628 0.4895776 0.1538311 2.0552770 -1.3351100
[[4]]
[1] -0.1118248 0.4838552 2.7614692 -0.7824381 0.5151733 2.2416832
[[5]]
[1] 1.7293663 0.5335523 -0.4605581 -0.7785337 0.7875933 -0.8702821
[[6]]
[1] 1.15512596 -1.14722217 0.44119379 0.03748791 0.03285100 -0.05754903
[[7]]
[1] 0.5513116 1.4185419 -0.7616093 1.5258314 1.7186733 -0.9435652
[[8]]
[1] -1.0346102 -1.9515274 0.3263094 -0.9846696 -0.1100608 1.2949033
[[9]]
[1] 1.3427732 0.8074878 -2.0393332 -0.0580785 0.9315681 1.1272597
[[10]]
[1] 1.5801751 0.6694740 0.3058637 -0.8653836 0.3402794 1.3181050
[[11]]
[1] 1.7001214 2.8050716 0.6580970 3.0519142 2.3411307 -0.6577423
map解决方案就是我一直在寻找的。谢谢