出於純粹的好奇心,我想在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