我有一群人,这些人具有关于他们是否还活着,性别和年龄的属性:
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)
答案 0 :(得分:1)
阅读帮助文件后,看起来?update_list
就是您想要的:
map(ind, update_list, age = ~age + 1)
因此将ind
函数的每个项目应用于update_list
,并用表达式age
的结果替换age + 1
变量。