[英]In R, how to use a “null” default value for an argument of a function?
[英]R: How do I define function argument default as NULL when argument is factor
我試圖在將默認值定義為NULL的同時將參數傳遞給作為因子數據類型的函數。 下面是一個簡化的示例:
my_function <- function(my_arg = c(NULL,"this","that")){
Do stuff here...
}
這似乎不起作用,好像我按以下方式定義函數:
my_function <- function(my_arg = c(NULL,"this","that")){
print(my_arg)
}
結果是:
> my_function()
[1]“這個”“那個”
不確定如何將參數作為已定義默認值NULL的因子傳遞。 謝謝!
編輯:
感謝您的答復,但這些答復並不能真正回答我的問題。 也許我不夠具體。 我的示例是我實際上要完成的工作的高度簡化示例,但是我需要指定一個可以采用以下三個值之一的參數:“ this”,“ that”和NULL。 除此之外,我需要將默認值設置為NULL。 我可以簡單地設置my_arg = NULL,但是然后我沒有在函數簽名中指定我的arg必須是這三個選項之一。 您的解決方案對我來說都不是。 如果我通過清單,說
my_function <- function(my_arg = list(NULL,"this","that")){
print(my_arg)
}
結果如下:
> my_function("this")
[1] "this"
> my_function("asdf")
[1] "asdf"
> my_function()
[[1]]
NULL
[[2]]
[1] "this"
[[3]]
[1] "that"
因此,如果我沒有將值專門傳遞給my_args,它將使用簽名中列出的每個值對函數進行迭代。 我需要的是該函數接受NULL,“ this”或“ that”作為參數值,而如果未傳遞任何內容,則將NULL設置為默認值。
向量不能包含NULL
。 您需要為此的列表:
c(NULL,"this","that")
#[1] "this" "that"
list(NULL,"this","that")
#[[1]]
#NULL
#
#[[2]]
#[1] "this"
#
#[[3]]
#[1] "that"
如文檔所述:
NULL表示R中的空對象
語言定義進一步說明:
2.1.6空
有一個稱為NULL的特殊對象。 在需要指示或指定不存在對象時使用。 請勿將其與向量或零長度列表混淆。
NULL對象沒有類型,也沒有可修改的屬性。 R中只有一個NULL對象,所有實例都引用該對象。 要測試NULL,請使用is.null。 您不能將屬性設置為NULL。
向量只能包含一種類型的值,並且由於NULL
沒有類型,因此它不能在向量中。 用<-
為子集分配NULL
會刪除該子集,而c
只會忽略NULL
。
您可以單獨指定參數:
my_function <- function(my_arg1 = NULL, my_arg2="this", my_arg3="that"){
print(is.null(my_arg1))
}
#> my_function()
#[1] TRUE
或者,如@Roland所指出的,您可以將它們作為列表傳遞:
my_function <- function(my_arg = list(NULL,"this","that")){
print(is.null(my_arg[[1]]))
}
#> my_function()
#[1] TRUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.