【发布时间】:2021-04-04 10:00:25
【问题描述】:
有时我想将相同的功能应用于环境中存在的多个对象并将这些对象分配给它们自己。但这通常需要写下多个自赋值运算符,效率不高且容易出错。
这是这个例程的最小版本:
# setup
library(magrittr)
library(tibble)
# creating a few dataframes for a demo
df1 <- mtcars
df2 <- ToothGrowth
df3 <- anscombe
# performing the *same* operation on 3 different objects
# and self-assigning using magrittr's assignment pipe
df1 %<>% as_tibble(.)
df2 %<>% as_tibble(.)
df3 %<>% as_tibble(.)
这里不是重复as_tibble 三次,有没有办法让我通过指定我想对所有对象应用的函数来自我分配对象仅一次(请参阅zeallot::%<-%寻找灵感)。
如果解决方案来自 tidyverse 包,我更愿意,但也不介意 base-R 解决方案。
【问题讨论】:
-
谢谢。在
tidyverse中,我是否只需将lapply替换为purrr::map? -
也就是说,我的问题有点不同,因为我希望对象在修改后自行分配。您指出的解决方案将修改后的对象存储在列表中,这意味着我需要跟踪哪个对象属于列表中的哪个位置。