gpt4 book ai didi

r - 在 switch 语句中使用其名称将不带引号的参数传递给 R 函数

转载 作者:行者123 更新时间:2023-12-03 18:30:55 26 4
gpt4 key购买 nike

我有一个函数可以刷新使用来自数据库的新值传递的变量(在某些条件下)。如果不满足这组条件,则返回值是变量本身,没有变化。条件并不重要,但在其名称上使用引号传递变量的方式很麻烦。有没有办法在没有引号的情况下传递参数。

考虑一个玩具函数 ref以下。我们需要直接将变量作为参数传递。目前,只有当我将变量的名称作为字符向量传递时,此函数才起作用。

abc=55
wxy=44
ref<-function(variable_name=NULL){
if(exists(variable_name))
{
updated_df = switch(variable_name,
"abc"=paste("Variable1:",variable_name,get(variable_name)),
"wxy"=paste("Variable2:",variable_name,get(variable_name)),
"NOT FOUND")
} else stop("passed variable does not exist")
if(updated_df=="NOT FOUND") updated_df = get(variable_name)
updated_df
}

一个类似但不一样的问题是 here .它没有帮助。

最佳答案

1) 使用 deparse(substitute(x))得到名字。不使用任何包。

ref <- function(variable) {
name <- deparse(substitute(variable))
cat("name:", name, "value:", variable, "\n")
}

# test

abc <- 55
ref(abc)
## name: abc value: 55

2) 另一种可能性是传递一个公式:
ref2 <- function(formula) {
name <- all.vars(formula)[1]
variable <- get(name, environment(formula))
cat("name:", name, "value:", variable, "\n")
}

# test

abc <- 55
ref2(~ abc)
## name: abc value: 55

关于r - 在 switch 语句中使用其名称将不带引号的参数传递给 R 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com