如何在R函数中使用动态生成的函数参数名?
R语言动态参数名调用函数的解决方法
方法1:基础R方案——使用do.call()
这是原生R的通用解决方式,无需额外依赖。核心思路是先把动态参数名和对应值封装成命名列表,再通过do.call()将列表拆解为函数的命名参数传入。
示例代码:
parametername <- paste0("Parameter", "1") value <- 3.4 # 方式1:用setNames创建命名列表 args_list <- setNames(list(value), parametername) # 方式2:手动指定列表名称 # args_list <- list(value) # names(args_list) <- parametername # 调用目标函数 do.call(genericFunction, args_list)
方法2:tidyverse生态方案——使用rlang::!!!展开运算符
如果日常使用tidyverse工具链,可以借助rlang包的!!!(“unquote-splice”)运算符,直接将命名列表展开为函数的命名参数。
示例代码:
library(rlang) parametername <- paste0("Parameter", "1") value <- 3.4 args_list <- setNames(list(value), parametername) # 用!!!展开命名列表作为函数参数 genericFunction(!!!args_list)
补充纠正
你之前尝试的genericList[[parametername = value]]写法存在语法错误,针对列表的动态赋值正确写法应为:genericList[[parametername]] <- value,或用setNames创建新的命名列表。
内容的提问来源于stack exchange,提问作者Greacus
相关产品推荐
相关产品推荐

