You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何提取传入函数的列表对象名称并转为字符串存储

R语言自定义函数提取传入对象的变量名解决方案

基础版(无需额外依赖)

my_function <- function(obj, arg = NULL) {
  # 注意:此行必须放在所有修改obj的操作之前
  obj_string <- deparse(substitute(obj))
  
  # 函数内部任意位置都可以直接调用obj_string
  print(obj_string)
}

测试效果

list_name <- list(x = 1, y = 2)
my_function(list_name)
# 输出:[1] "list_name"

鲁棒版(适配嵌套函数、管道调用场景)

需要使用rlang包,适配更复杂的调用场景,规避基础版的边界问题:

library(rlang)
my_function <- function(obj, arg = NULL) {
  obj_string <- as_name(ensym(obj))
  
  # 函数内部任意位置都可以直接调用obj_string
  print(obj_string)
}
之前方法失效的常见原因
  • 提取名字的代码没有放在函数最开头,执行substitute之前已经修改过obj参数的值,导致捕获的是修改后的表达式而非原始传入的变量名
  • 函数存在嵌套调用场景,基础的substitute无法跨函数捕获上层传入的原始变量名,换用rlang版本即可解决

内容的提问来源于stack exchange,提问作者GNicoletti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:57:00