簡體   English   中英

空字符串上的R switch語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM