传递给次函数的函数的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
}