我认为这非常简单,但是我似乎找不到答案。
我正在编写IF语句,但是测试是对象是否返回character(0)
值。我不确定character(0)
声明中的处理方式。
假设Test <- character(0)
或一个值:
if (identical(Pols4,character(0))) {
print('Empty')
} else {
print('Not Empty')
}
它似乎仍然不起作用.....
我认为这非常简单,但是我似乎找不到答案。
我正在编写IF语句,但是测试是对象是否返回character(0)
值。我不确定character(0)
声明中的处理方式。
假设Test <- character(0)
或一个值:
if (identical(Pols4,character(0))) {
print('Empty')
} else {
print('Not Empty')
}
它似乎仍然不起作用.....
length(NULL)
也为零length(numeric(0))
。
if(identical(Test, character(0)))
无效?
Pols4
?? 它适用于Test
Answers:
使用此identical
功能进行检查。
a <- character(0)
identical(a, character(0)) # returns TRUE
identical(a, "") # returns FALSE
identical(a, numeric(0)) # returns also FALSE
FALSE
之前,我仍然会得到回报,identical(a,as.Date(character(0))
因为character(0)
即使我在代码中将结果强制转换为日期之后,该值仍显示为。
character(0)
,因此此行为完全可以。quote(character(0))
也显示为character(0)
在控制台中,并且肯定与不一致character(0)
。
a == character(0)
返回logical(0)
而不是返回TRUE
==
作品vectorwise(参见c("a","b")==c("a","c")
返回c(TRUE,FALSE)
),并character(0)
是一个“类型长度为0的‘字符’的载体”(参见c("a", character(0))
相同"a"
)。因此,“长度为'0'的'逻辑'类型的向量”是声音结果。
添加强制性tidyverse答案。该rlang
软件包具有功能is_empty()
,它可以完全满足您的需求。
Test <- character(0)
rlang::is_empty(Test)
#[1] TRUE
这也适用于非字符的空向量。例如,它在Patrick Roocks在评论中描述的情况下有效。
Test <- as.Date(character(0))
rlang::is_empty(Test)
#[1] TRUE
加载“ tidyverse”包也将加载is_empty()
。
is_empty()
也位于purrr
许多人忘记了诸如str_locate_all()
require%>% unlist()
或%>% .[[1]]
。
然后,您可以轻松地character(0)
通过length()
功能检测到if > 0
可以安全使用str_locate_all()
例如输出。
例:
value <- str_extract_all("kvk :", ascii_digit(8,8)) %>% unlist()
if (length(value) > 0) {
# Do something
}
我解决此问题的方法是仅通过再次将其转换为字符并找到“ 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
我希望这是您要求的解决方案。
length(character(0))
为零,if (length(x))
应该这样做。