2014-09-03 23 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