Thank you for posting this. Super weird! When I copy&paste exactly your code (with fresh environment), I get a different output (the "result" is wrong).
library(tidyverse)
decode <- function(code) {
# return a list of data frames for the decoded string vector code
code %>%
str_split(",") %>%
map(str_split, ";", simplify = TRUE) %>%
map(as.data.frame) %>%
map(set_names, c("name", "value")) %>%
map(mutate, value = as.numeric(value))
}
sum_these <- function(df1, to_sum1) {
# for one data frame of name, value (df1), sum the values for name in to_sum1
df1 %>% filter(name %in% to_sum1) %>% pull(value) %>% as.numeric() %>% sum()
}
code <- c("a;10,b;20,c;30","b;20,c;30","c;30,b;40","a;40,b;50")
var_1 <- c(1,4,7,10)
var_2 <- c(2,5,8,11)
df <- tibble(
code, var_1, var_2,
val = decode(code),
to_sum = list(c("a", "b")),
result = map2_dbl(val, to_sum, sum_these)
)
print(df)
# A tibble: 4 × 6
code var_1 var_2 val to_sum result
<chr> <dbl> <dbl> <list> <list> <dbl>
1 a;10,b;20,c;30 1 2 <df [3 × 2]> <chr [2]> 3
2 b;20,c;30 4 5 <df [2 × 2]> <chr [2]> 1
3 c;30,b;40 7 8 <df [2 × 2]> <chr [2]> 2
4 a;40,b;50 10 11 <df [2 × 2]> <chr [2]> 3
I updated all packages. Do you have an idea ?