如何为R函数的无引号输入添加引号?
解决方法
要实现无引号参数输入时获取变量名的效果,你需要利用R的非标准求值特性,通过substitute()捕获传入的原始参数表达式,再用deparse()将其转换为字符串。
正确的函数定义
function_name <- function(x) { # 捕获参数的原始符号并转为字符串 var_name <- deparse(substitute(x)) paste0("The variable you have chosen is ", var_name) }
测试效果
- 调用
function_name(gender),无论gender是否已定义,都会输出:[1] "The variable you have chosen is gender" - 即使
gender是已赋值的变量(比如gender <- "female"),调用函数依然会返回变量名,而非变量的值。
为什么之前的方法报错?
当你直接在函数里使用x时,R会优先尝试对x求值——如果gender未定义,自然会抛出"object not found"的错误。而substitute(x)不会对参数求值,它会直接返回你传入的原始符号(比如gender这个符号本身),再通过deparse()将这个符号转换成字符串,就能得到你想要的参数名称了。
内容的提问来源于stack exchange,提问作者eycramer
相关产品推荐
相关产品推荐

