2016-12-02 57 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

相關問題