R - 如何在IF语句中测试字符(0)

时间:2014-09-03 08:56:18

标签: r if-statement

我认为这非常简单,但似乎无法找到答案。

我正在编写IF语句,但测试是对象是否返回character(0)值。我不确定如何在声明中处理character(0)

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

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

它似乎仍然不起作用.....

6 个答案:

答案 0 :(得分:66)

使用identical功能进行检查。

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

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

答案 1 :(得分:4)

使用length()方法:

> check <- function(value) {
+ if (length(value)==0) {
+ print('Empty')
+ } else {
+ print('Not Empty')
+ }
+ }
> check("Hello World")
[1] "Not Empty"
> check("")
[1] "Not Empty"
> check(character(0))
[1] "Empty"

答案 2 :(得分:4)

添加强制性整洁答案。 purrr程序包具有功能is_empty(),它可以完全满足您的需求。

Test <- character(0)
purrr::is_empty(Test)
#[1] TRUE

这也适用于非字符的空向量。例如,它可以在Patrick Roocks在评论中描述的情况下使用。

Test <- as.Date(character(0))
purrr::is_empty(Test)
#[1] TRUE

答案 3 :(得分:1)

我解决此问题的方法是仅通过再次将其转换为字符来处理该列 并找到“ character(0)”。

例如:

df$interest_column <- as.character(df$interest_column) # Cast it into a character again
df[df$interest_column == "character(0)","interest_column"] <- NA  # Assign new value

我希望这是您所要求的解决方案。

答案 4 :(得分:0)

许多人忘记了str_locate_all() require %>$ unlist()%>%之类的功能。[[1]] 然后,您可以使用length()函数if > 0轻松检测到字符(0),例如,您可以安全地使用str_locate_all的输出。

示例:

value <- str_extract_all("kvk :", ascii_digit(8,8)) %>% unlist()
if(length(value) > 0) {
  #dosomething
}

答案 5 :(得分:0)

代替了length(),而是为我nrows()