首页 > 解决方案 > 关于在 rlang 4.0 中使用 curly-curly '{{ }}' 的问题

问题描述

我正在尝试使用 map() 将对象列表单独保存在压缩格式文件中(作为 .rds 文件)。代码首先读取所有对象和内存,过滤它们以仅包含感兴趣的对象类型并将结果存储为列表。然后该函数应该继续并一次获取一个对象并将结果保存为 rds 格式。但是,我显然还没有理解关于 {{ 语法的新文章。我放入reprex的结果是最新的尝试。有人可以直接帮助或将我发送到另一个资源(除了 tidyverse 网站上的 rlang 0.4 帖子),它解释了如何以我能理解的方式使用 curly-curly。我正在尝试在我的研究中切换到更实用的方法,我们将不胜感激。代码如下。

library(tidyverse)
library(rlang)
#> 
#> Attaching package: 'rlang'
#> The following objects are masked from 'package:purrr':
#> 
#>     %@%, as_function, flatten, flatten_chr, flatten_dbl,
#>     flatten_int, flatten_lgl, flatten_raw, invoke, list_along,
#>     modify, prepend, splice

## Prepare the vector of object names
objs_fail <- enframe(objects(), name = NULL) %>% 
   filter(str_sub(value, 1,3) %in% c("dif", "fil", "met", "myD", "tss")) 
objs_fail <- as.list(objs_fail$value)
type <- "vfail"

## function to take the objects and store them into individual compressed files
save_the_files <- function(objs, type) {
   map({{objs}}, saveRDS(.data[[obj]], 
                         paste0("./cg_", type, "/", .data[[obj]], "_", type, ".rds")))
}

由 reprex 包(v0.3.0)于 2019 年 7 月 14 日创建

该函数将通过如下调用调用

save_the_files(objs_fail, "vfail")

并且列表中的单个对象将是类似“diffAnn”的字符串

谢谢您的帮助。

吉姆·亨特

标签: rrlang

解决方案


推荐阅读