在列表中的列表的地图内发生变异
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 的评论,这适用于 purrr
(0.2.2.9000
)的开发版本,但不适用于当前的 CRAN 版本(0.2.2
)。不要知道为什么了)。
如何使用 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 的评论,这适用于 purrr
(0.2.2.9000
)的开发版本,但不适用于当前的 CRAN 版本(0.2.2
)。不要知道为什么了)。