[英]R switch statement on empty string
以下代碼有效:
switch("A", "A" = "a", "B" = "b", "C" = "c", "OTHER")
但是這段代碼沒有:
switch("A", "" = "BLANK", "A" = "a", "B" = "b", "C" = "c", "OTHER")
它失敗並出現錯誤:
Error: attempt to use zero-length variable name
是否有理由允許 R switch 語句采用空字符串?
問題不在於switch是否可以接受一個空字符串,而是一個空字符串是否是有效的對象名 。 不是。 通過這種用法,您可以做與
"" = "BLANK"
您嘗試從交換機獲得什么行為? 用可重復的示例進行描述,我們將看看是否能為您指明正確的方向!
回應評論:開關未編寫為能夠處理返回默認值以外的內容的空字符串。 如果您想要一個默認值,另一個想要一個空字符串,則需要一個包裝器,如下所示:
f <- function(x){
if(x == "") return("BLANK")
switch(x, A = "a", B = "b", C = "c", "OTHER")
}
f("A")
# [1] "a"
f("ABC")
# [1] "OTHER"
f("")
# [1] "BLANK"
在某些情況下,您可能希望在switch<\/code>語句中進行“空白”檢查,可能的解決方案是:
switch(paste0(x, 'x'), x = 'BLANK', Ax = 'a', Bx = 'b', 'OTHER')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.