How to get list name and slice name using pipe and purrr

I wonder how to get the list name or group name as a flag when using purrr operation. for example: I want to use the dynameic parameter for each list name that goes into the ggsave function.

require(purrr)
require(ggplot2)
lst=list(a1=data.frame(x=1:10,y=2:11),a2=data.frame(x=1:10,y=-1*2:11))
df=rbind(transform(lst[[1]],id="a1"),transform(lst[[2]],id="a2"))
lst %>% map(~ggsave(plot=qplot(data=.,x="x",y="y",geom="line"),file=paste(listname(.),".png")))
df %>% slice_rows("id") %>%
  by_slice(~ggsave(plot=qplot(data=.,x="x",y="y",geom="line"),file=paste("slicename(.)",".png")))

slicename (.) should be something like a unique one (. [["id"]]), but when using slice_rows it does not work.

+4
source share
2 answers

listname slicename purrr, names, , purrr. , , , walk, map by_slice, , .

,

   lst=list(a1=data.frame(x=1:10,y=2:11),a2=data.frame(x=1:10,y=-1*2:11))

   list(lst, names(lst)) %>% 
        pwalk( ~ ggsave(plot=qplot(data=.x,x=x,y=y,geom="line"),filename=paste(.y,".png")) )

,

df %>% split(.$id) %>% 
       list( names(.)) %>% 
       pwalk( ~ ggsave(plot=qplot(data=.x, x=x, y=y, geom="line"), filename=paste(.y,".png")))
+3

, purrr::walk2 lst names(lst):

lst=list(a1=data.frame(x=1:10,y=2:11),a2=data.frame(x=1:10,y=-1*2:11))

purrr::walk2(
  lst,
  names(lst),
  ~ ggsave(plot=qplot(data=.x,x=x,y=y,geom="line"),filename=paste(.y,".png"))
)

2017-08-30: "" purrr 0.2.3, walk2(lst, names(lst)):

lst=list(a1=data.frame(x=1:10,y=2:11),a2=data.frame(x=1:10,y=-1*2:11))

purrr::iwalk(
  lst,
  ~ ggsave(plot=qplot(data=.x,x=x,y=y,geom="line"),filename=paste(.y,".png"))
)
+4

Source: https://habr.com/ru/post/1624635/


All Articles