0

如何使用 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))不起作用。任何其他想法如何做到这一点?

4

1 回答 1

1

根据您的代码,输出与 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 的评论,这适用于purrr( 0.2.2.9000) 的开发版本,但不适用于当前的 CRAN 版本 ( 0.2.2)。还不知道为什么)。

于 2016-10-13T16:12:37.860 回答