Мы могли бы использовать базовый подход R, используя mapply
, изменяя значения в элементе letter
каждого списка из соответствующего элемента b
.
df$a <- mapply(function(x, y) {x['letter'] <- y;list(x)}, df$a, df$b)
df$a
#[[1]]
#[[1]]$number
#[1] 1
#[[1]]$letter
#[1] "c"
#[[2]]
#[[2]]$number
#[1] 2
#[[2]]$letter
#[1] "d"
Если вас интересует подход tidyverse
, мы можем использовать ту же логику, используя map2
library(tidyverse)
df$a <- map2(df$a, df$b, function(x, y) {x['letter'] <- y;x})
Или используя другой подход, используяlapply
do.call("rbind", lapply(seq_len(nrow(df)), function(x) {
df$a[[x]]['letter'] <- df$b[x]
df[x, ]
}))