2014-09-03 43 views
23

我想這非常簡單,但我似乎找不到答案。R - 如何在IF語句中測試字符(0)

我正在寫IF語句,但測試是如果對象返回character(0)值。我不知道如何在聲明中處理character(0)

假設Test <- character(0)或值:

if (identical(Pols4,character(0))) { 
    print('Empty') 
} else { 
    print('Not Empty') 
} 

它似乎仍然沒有工作.....

+2

'length(character(0))'爲零,所以'if(length(x))'應該這樣做。 – tonytonov 2014-09-03 08:59:48

+3

沒有抱歉,它沒有。 'length(NULL)'也是零,'length(numeric(0))'也是。 – 2014-09-03 09:04:35

+1

將您的第一行更改爲'if(相同(測試,字符(0)))'不起作用? – 2014-09-03 09:27:57

回答

37

使用identical功能進行檢查。

a <- character(0) 
identical(a, character(0)) # returns TRUE 

identical(a, "")   # returns FALSE 
identical(a, numeric(0)) # returns also FALSE 
+0

直到我使用'identical(a,as.Date(character(0))'後,我仍然獲得'FALSE'返回值,因爲即使在投射之後,該值顯示爲'character(0) – 2017-03-20 19:53:26

+0

如果你給Date賦了一個值,那麼它與'character(0)'不一樣,所以這種行爲非常好,'quote(character(0))'也被顯示出來作爲控制檯中的「字符(0)」,並且與「字符(0)」明確地不相同 – 2017-03-21 09:46:01

+0

我不是在抱怨,我只是分享以防其他人有類似的情況。 – 2017-03-23 13:42:04