在列表中的列表的地图内发生变异

Mutate within map of a list within list

如何使用 map 将值 g 移动到 df 的列中?

r<-data.frame(o=runif(n = 50),m=rep(c("A","N"),25))
te<-data.frame(o=runif(n = 50),m=rep(c("G","H"),25))
aq<-list(f=list(df=r,g=0),g2=list(df=te,g=5))

str 后的预期结果是:

List of 2
 $ f :List of 2
  ..$ df:'data.frame':  50 obs. of  2 variables:
  .. ..$ o: num [1:50] 0.785 0.253 0.228 0.323 0.332 ...
  .. ..$ m: chr [1:50] "A" "N" "A" "N" ...
  .. ..$ g: num [1:50] 0
  ..$ g : num 0
 $ g2:List of 2
  ..$ df:'data.frame':  50 obs. of  2 variables:
  .. ..$ o: num [1:50] 0.0271 0.6264 0.1487 0.2008 0.6946 ...
  .. ..$ m: chr [1:50] "G" "H" "G" "H" ...
  .. ..$ g: num [1:50] 5
  ..$ g : num 5

map(aq,~mutate(.$df$g=.$g)) 不起作用。还有其他想法吗?

根据您的代码,与 Akrun 的评论中的输出相同(即少一层嵌套):

map(aq, ~ dplyr::mutate(.x$df, g = .x$g))

简单编辑以获得所需的结构:

map(aq, ~ list(df = dplyr::mutate(.x$df, g = .x$g), g = .x$g))

(编辑:根据 Misha 的评论,这适用于 purrr0.2.2.9000)的开发版本,但不适用于当前的 CRAN 版本(0.2.2)。不要知道为什么了)。