It's a little tricky with the map function. if you're using structure like list %>% map(), remember that the .x object inside map syntax refers to the subordinate object of the list.
In the case above, you're going to iterate through a list which consists of data.frames. Here the .x in map, at the first layer, refer to each data.frame from list_1.
In addition, mutate directly calls the names from the dataframe which passed to its .data param, you don't have to write .x$... inside mutate().
So the coding would be:
list_2 <- list_1 %>% map(
~ .x %>% mutate(
n_p = if_else(
cat == "a",
map(Result, iter_n2a), # considering `iter_n2a` is a single-param function, we can directly quote its name in map
map(Result, iter_n2b))
))
# or the clearer version:
list_2 <- map(
list_1,
function(df) df %>% mutate(n_p = if_else(cat == "a", map(Result, iter_n2a), map(Result, iter_n2b)))
)
list_2
[[1]]
# A tibble: 4,000 x 6
id cat month n Result n_p
<int> <chr> <dbl> <dbl> <dbl> <list>
1 1 a 1 8 0.968 <dbl [1,000]>
2 1 a 1 8 0.976 <dbl [1,000]>
3 1 a 1 8 0.969 <dbl [1,000]>
4 1 a 1 8 0.967 <dbl [1,000]>
5 1 a 1 8 0.961 <dbl [1,000]>
6 1 a 1 8 0.983 <dbl [1,000]>
7 1 a 1 8 0.977 <dbl [1,000]>
8 1 a 1 8 0.961 <dbl [1,000]>
9 1 a 1 8 0.953 <dbl [1,000]>
10 1 a 1 8 0.945 <dbl [1,000]>
# ... with 3,990 more rows
[[2]]
# A tibble: 4,000 x 6
id cat month n Result n_p
<int> <chr> <dbl> <dbl> <dbl> <list>
1 2 a 2 1 0.349 <dbl [1,000]>
2 2 a 2 1 0.371 <dbl [1,000]>
3 2 a 2 1 0.353 <dbl [1,000]>
4 2 a 2 1 0.348 <dbl [1,000]>
5 2 a 2 1 0.333 <dbl [1,000]>
6 2 a 2 1 0.397 <dbl [1,000]>
7 2 a 2 1 0.374 <dbl [1,000]>
8 2 a 2 1 0.332 <dbl [1,000]>
9 2 a 2 1 0.318 <dbl [1,000]>
10 2 a 2 1 0.304 <dbl [1,000]>
# ... with 3,990 more rows
[[3]]
# A tibble: 4,000 x 6
id cat month n Result n_p
<int> <chr> <dbl> <dbl> <dbl> <list>
1 3 a 3 6 0.924 <dbl [1,000]>
2 3 a 3 6 0.938 <dbl [1,000]>
3 3 a 3 6 0.926 <dbl [1,000]>
4 3 a 3 6 0.923 <dbl [1,000]>
5 3 a 3 6 0.912 <dbl [1,000]>
6 3 a 3 6 0.952 <dbl [1,000]>
7 3 a 3 6 0.940 <dbl [1,000]>
8 3 a 3 6 0.912 <dbl [1,000]>
9 3 a 3 6 0.900 <dbl [1,000]>
10 3 a 3 6 0.887 <dbl [1,000]>
# ... with 3,990 more rows
[[4]]
# A tibble: 6,000 x 6
id cat month n Result n_p
<int> <chr> <dbl> <dbl> <dbl> <list>
1 4 a 4 4 0.821 <dbl [1,000]>
2 4 a 4 4 0.844 <dbl [1,000]>
3 4 a 4 4 0.824 <dbl [1,000]>
4 4 a 4 4 0.820 <dbl [1,000]>
5 4 a 4 4 0.802 <dbl [1,000]>
6 4 a 4 4 0.868 <dbl [1,000]>
7 4 a 4 4 0.847 <dbl [1,000]>
8 4 a 4 4 0.801 <dbl [1,000]>
9 4 a 4 4 0.784 <dbl [1,000]>
10 4 a 4 4 0.766 <dbl [1,000]>
# ... with 5,990 more rows
[[5]]
# A tibble: 7,000 x 6
id cat month n Result n_p
<int> <chr> <dbl> <dbl> <dbl> <list>
1 5 a 5 2 0.576 <dbl [1,000]>
2 5 a 5 2 0.605 <dbl [1,000]>
3 5 a 5 2 0.581 <dbl [1,000]>
4 5 a 5 2 0.575 <dbl [1,000]>
5 5 a 5 2 0.556 <dbl [1,000]>
6 5 a 5 2 0.637 <dbl [1,000]>
7 5 a 5 2 0.609 <dbl [1,000]>
8 5 a 5 2 0.554 <dbl [1,000]>
9 5 a 5 2 0.535 <dbl [1,000]>
10 5 a 5 2 0.516 <dbl [1,000]>
# ... with 6,990 more rows