purrr相当于lapply返回多元素列表?

时间:2018-12-20 05:35:11

标签: r purrr

我有一群人,这些人具有关于他们是否还活着,性别和年龄的属性:

ind <- vector(mode="list", 10)
  for(i in seq(ind)){
    ind[[i]]$alive <- 1 
    ind[[i]]$sex <- sample(c("female","male"),1) 
    ind[[i]]$age <- round(runif(1, min=1, max=10))
  }
ind

使用lapply,我可以增加每个人的年龄,并获得具有所有属性的个人列表:

lapply(ind,function(x){x$age <- x$age+1; x})

是否有来自purrr的映射函数可以完成相同的操作(提供与lapply相同的输出)?使用map()时,我只会返回年龄列表,而不是每个人的所有属性:

map(ind, ~.$age+1)

1 个答案:

答案 0 :(得分:1)

阅读帮助文件后,看起来?update_list就是您想要的:

map(ind, update_list, age = ~age + 1)

因此将ind函数的每个项目应用于update_list,并用表达式age的结果替换age + 1变量。