为什么“相交”语法在 R 中的“if 语句”中不起作用



我知道 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"

相关内容

  • 没有找到相关文章

最新更新