R中如何通过变量名编程调用tar_read批量读取targets数据集
targets包编程批量读取target的解决方案
tar_read()默认使用非标准求值,会直接捕获传入的参数符号本身,不会解析符号指向的字符串值,所以直接传入存储target名的变量会触发找不到target的报错。targets包原生提供了标准求值的编程接口,无需自行处理NSE逻辑。
方案1:使用官方编程接口tar_read_raw()(推荐)
该函数专门适配编程场景,直接接受字符串格式的target名称,完美适配循环批量读取:
# 单个变量读取示例 target_name <- "data_a" data <- tar_read_raw(target_name) # lapply批量读取多个target示例 target_list <- c("data_a", "data_b", "data_c") all_data <- lapply(target_list, tar_read_raw)
如果需要直接将多个target加载到当前工作环境,可以使用对应批量函数tar_load_raw():
# 直接将data_a、data_b加载到全局环境,无需手动逐个赋值 tar_load_raw(c("data_a", "data_b"))
方案2:在tar_read()中正确注入符号
如果你需要坚持使用tar_read(),需要先将字符串转换为符号对象再用!!注入,之前注入失败大概率是缺少转符号的步骤:
library(rlang) target_name <- "data_a" # 先将字符串转为符号再注入 data <- tar_read(!!sym(target_name))
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

