传递给次函数的函数的Deparse值

传递给次函数的函数的Deparse值,r,R,我有一个函数,定义如下 fn1我们可以在第一帧进行替换 deparse_var <- function(var) { if (is.null(var)) var else deparse(substitute(var, sys.frame(1))) } fn2 <- function(var = NULL) { deparse_var(var) } fn2() #NULL fn2(test) #[1] "test" 为了将“NULL”改为NULL,可以添加i

我有一个函数,定义如下


fn1我们可以在第一帧进行替换

deparse_var <- function(var) {
  if (is.null(var)) var else deparse(substitute(var, sys.frame(1)))
}

fn2 <- function(var = NULL) {
  deparse_var(var)
}
fn2()  
#NULL 

fn2(test)   
#[1] "test"
为了将“NULL”改为
NULL
,可以添加
if/else
。来自@Nathanestwood的评论

deparse_var <- function(var) {
  res <- if (missing(var)) var else deparse(substitute(var, sys.frame(1))) 
  if (res == "NULL" && is.null(var)) NULL else res
}

deparse\u var下面的内容如何?应适用于缺失、空和其他


deparse\u var适用于任何绊倒在这篇文章上的人。我仍然对发布的解决方案存在问题。但是,下面的解决方案确实有效


deparse\u var是-就是这个。我试图使用
parent.frame()
,但没有任何乐趣。谢谢:)检查一下,第一个解决方案不起作用。第二个解决方案返回一个字符
“NULL”
,而不是实际的
NULL
@Nathanestwood这可能是因为R版本,因为我无法获得您在文章中显示的原始函数错误?我正在使用
R 3.6.2
关于第二种情况,您可以使用
if/else
.e<代码>v1我确实想知道是否是R版本可能是问题所在。我在3.6.3上。附加的
if/else
有效,您实际上可以将其放置在
deparse\u var()
中。很明显这有点老套,但我想它会管用的。它可能是。对于第二个选项,它只是一个
if/else
语句
deparse_var <- function(var) {
  res <- if (missing(var)) var else deparse(substitute(var, sys.frame(1))) 
  if (res == "NULL" && is.null(var)) NULL else res
}