Я пытаюсь понять invoke_map
.В этом случае я имитирую 30 двумерных случайных нормальных наблюдений и назначаю их в поле группировки для последующего использования, моделирующего случайный перехват и наклон.
Все просто, пока мне не придется раскатывать столбец матрицы.
Главное, что строка mutate(u1,u2)
кажется более сложной, чем она должна быть.Что я должен сделать вместо этого?
library(dplyr)
library(mvtnorm)
N <- 30
# Simulate two correlated random normal variables into a tibble
var_u1 <- 0.0005
var_u2 <- 0.010
cov_u1_u2 <- -0.0002
SIGMA <- matrix(c(var_u1, cov_u1_u2, cov_u1_u2, var_u2), nrow = 2)
sim_u <- dplyr::tribble(
~f, ~params,
'rmvnorm', list(n = N, mean = c(0,0), sigma = SIGMA)
)
u <- sim_u %>%
mutate(u = purrr::invoke_map(f,params)) %>%
mutate(u0 = purrr::map(u,`[`,i=,j=1),
u1 = purrr::map(u,`[`,i=,j=2)) %>%
tidyr::unnest(u0,u1) %>%
mutate(lab = 1:N) %>%
select(lab,u0,u1)
u