2016-12-02 58 views
1

出于纯粹的好奇心,我想在R中创建一个创建新变量的函数。我不希望函数在运行时询问用户输入。假设x当前不是一个变量。下面是我想要的代码做一个例子:如果参数未定义,我可以在R中调用函数吗?

def=function(x){ 
x=NULL 
} 

def(x) 
x 
NULL. 
+0

好奇心很好,但不要在你的实际代码中这样做。副作用不好,会导致难以调试的错误。 – Roland

回答

2

替代允许您延迟变量的评价,as.character它变成键入的名字,如果我们再在parent.frame分配给它()为了价值,我们得到了你所追求的。

def <- function(x) { 
    y <- substitute(x) 
    assign(as.character(y),NULL,envir = parent.frame()) 
} 

> def(test) 
> test 
NULL 
+0

我打算添加一个答案,但最终结果与此非常相似。我会在分配之前在'parent.frame()'中为'x'添加一个测试,以确保你不覆盖任何东西:'if(!exists(as.character(y),where = parent.frame ()))assign()'。 –

+0

是的,我不确定这是不是所期望的行为,但是,这几乎肯定是一种更安全的方式。如果这是海报之后的内容,我会添加它。 – Shape

相关问题