如何用管道符合并代码创建命名向量?适配targets包需求
解决方案
你报错的核心原因是:rename_with()是dplyr包针对数据框(或tibble)设计的列重命名函数,不能直接用于普通向量,因此会触发“没有适用方法”的错误。
要把给向量命名的两行代码用管道合并,有几种可行的方式:
方法1:用set_names()(推荐,dplyr/purrr内置)
set_names()是专门给向量/列表命名的函数,完美适配管道语法:
# 先加载dplyr或purrr(两个包都包含这个函数) library(dplyr) v <- c(1:3) %>% set_names(letters[1:3])
方法2:base R的structure()
无需额外加载包,用base R的structure()直接给向量添加名称属性:
v <- c(1:3) %>% structure(names = letters[1:3])
方法3:base R结合管道(适合不想加载额外包的场景)
利用magrittr管道的特性,用大括号包裹赋值操作并返回向量本身:
library(magrittr) v <- c(1:3) %>% {names(.) <- letters[1:3]; .}
以上三种方法都可以在targets包中正常使用,因为都是标准的R表达式,符合targets对目标对象构建的要求。
内容的提问来源于stack exchange,提问作者Kang
相关产品推荐
相关产品推荐

