我知道 R 中 IF
语句的语法:
if (1==1){
print("this is true")
}
而且我知道()
之间的东西应该被评估为逻辑。 所以,当我尝试这个时:
if (intersect(list(1),list(1,2)) != list()){
print("this is also true")
}
我希望它能工作,因为intersect(list(1),list(1,2)) != list()
被评估为逻辑类型:
intersect(list(1),list(1,2)) == list()
我做错了什么吗? 谢谢。
逻辑运算符不适合比较列表对象。列表对象是一种递归类型,不能强制逻辑向量而不丢失结构信息。比较列表的功能是 identical
。期望您的操作提供 TRUE 似乎不合理,因为list(1)
和list(1,2)
的交集不会list()
,所以我颠倒了测试以允许测试:
if ( !identical(intersect(list(1),list(1,2)), list())) {
print("this is also true")
}
#[1] "this is also true"
交集list(1)
:
if ( identical(intersect(list(1),list(1,2)), list(1))) {
print("this is also true")
}
#[1] "this is also true"