gpt4 book ai didi

r - 我怎样才能让这个 deparse 函数工作

转载 作者:行者123 更新时间:2023-12-01 22:40:08 24 4
gpt4 key购买 nike

如果我这样做,我希望能够使用deparse 函数

g = function(x) deparse(substitute(x))

那么就可以了

R) g(test)
[1] "test"

但是如果我想测试g的参数是否是一个字符

h = function(x) {if(is.character(x)){return(x)}; deparse(substitute(x))}
R) h(test)
Error in h(test) : object 'test' not found

为什么会这样,我能解决吗?

编辑:转自新的 R --vanilla

R version 2.15.2 (2012-10-26)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United Kingdom.1252
[2] LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base

最佳答案

问题中的代码正在尝试评估一个变量 test,该变量不存在,因此出现错误。试试这个:

g = function(x) {
x.try <- try(x, silent = TRUE)
if (!inherits(x.try, "try-error") && is.character(x.try)) x.try
else deparse(substitute(x))
}

# test it out
if (exists("test")) rm(test)

g(test) # "test"
g("test") # "test"

test <- "xyz"
g(test) # "xyz"
g("test") # "test"

test <- 3
g(test) # "test"
g("test") # "test"

关于r - 我怎样才能让这个 deparse 函数工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15811305/

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