出于纯粹的好奇心,我想在R中创建一个创建新变量的函数。我不希望函数在运行时询问用户输入。假设x当前不是一个变量。下面是我想要的代码做一个例子:如果参数未定义,我可以在R中调用函数吗?
def=function(x){
x=NULL
}
def(x)
x
NULL.
出于纯粹的好奇心,我想在R中创建一个创建新变量的函数。我不希望函数在运行时询问用户输入。假设x当前不是一个变量。下面是我想要的代码做一个例子:如果参数未定义,我可以在R中调用函数吗?
def=function(x){
x=NULL
}
def(x)
x
NULL.
替代允许您延迟变量的评价,as.character
它变成键入的名字,如果我们再在parent.frame分配给它()为了价值,我们得到了你所追求的。
def <- function(x) {
y <- substitute(x)
assign(as.character(y),NULL,envir = parent.frame())
}
> def(test)
> test
NULL
我打算添加一个答案,但最终结果与此非常相似。我会在分配之前在'parent.frame()'中为'x'添加一个测试,以确保你不覆盖任何东西:'if(!exists(as.character(y),where = parent.frame ()))assign()'。 –
是的,我不确定这是不是所期望的行为,但是,这几乎肯定是一种更安全的方式。如果这是海报之后的内容,我会添加它。 – Shape
好奇心很好,但不要在你的实际代码中这样做。副作用不好,会导致难以调试的错误。 – Roland