如何在R语言函数中获取传入向量的变量名作为返回列表元素名
在R函数中获取传入参数的变量名作为列表元素名
你可以通过deparse(substitute(x))组合获取传入参数的变量名,再用这个名称构造返回的列表。以下是修改后的完整代码:
myFun <- function(x) { # 示例操作:计算输入向量的均值(可替换为你的实际操作) 某个值 <- mean(x) # 获取传入参数的变量名 var_name <- deparse(substitute(x)) # 构造以变量名为元素名的列表 setNames(list(某个值), var_name) } CL <- c(1,2,3,4,5) z <- myFun(CL)
执行后输出结果符合预期:
z
$CL
[1] 3
原理说明
substitute(x)会捕获传入函数的原始表达式(这里就是CL这个符号对象)deparse()将符号对象转换为字符串形式,得到变量名"CL"setNames()用来给列表元素设置指定的名称
如果你习惯使用rlang包的语法,也可以用更简洁的方式实现:
library(rlang) myFun <- function(x) { 某个值 <- mean(x) var_name <- as_name(ensym(x)) setNames(list(某个值), var_name) }
内容的提问来源于stack exchange,提问作者Peter Bonate
相关产品推荐
相关产品推荐

