运算符 OR 是否对其后面的参数的位置敏感

Is the operator OR sensitive to the position of the argument that follows it

我想编写相当简洁、更具可读性的 R 代码。 我每次都尝试去排队以避免代码太长。我注意到我有不同的结果,具体取决于我是否在 grepl 中的 OR 运算符之后转到该行。这让我很烦

例如使用此代码。我有:

sigaps$Oncologie<-ifelse(
  
  grepl("Radioth[ée]rapie|Chimioth[ée]rapie|Radiochimioth[ée]rapie|Cancer|Tumeur|Tumoral",
        sigaps$Titre.de.l.étude,
        ignore.case=TRUE),1,0)
table(sigaps$Oncologie)

  0   1
377 157

但是当我将 Tumoral 移到下一行时,我得到了不同的结果。我不明白什么不 作品:

sigaps$Oncologie<-ifelse(

  grepl("Radioth[ée]rapie|Chimioth[ée]rapie|Radiochimioth[ée]rapie|Cancer|Tumeur|
         Tumoral",
        sigaps$Titre.de.l.étude,
        ignore.case=TRUE),1,0)
table(sigaps$Oncologie)

  0   1
380 154

我一直这样做。但是我想知道,如果我不能用两种我发现相同的不同编码方式得到相同的结果,我是不是多年来一直在犯编码错误?

之所以会出现差异,是因为您打破了这一行,并通过将其拆分到下一行并缩进来在字符串中添加了空格。通过 a) 不这样做或 b) 使用 paste(..., sep="|")

创建字符串来修复它
grepl(paste("Radioth[ée]rapie", "Chimioth[ée]rapie",
            "Radiochimioth[ée]rapie", "Cancer", 
            "Tumeur", "Tumoral", sep="|"),
      sigaps$Titre.de.l.étude, ignore.case=TRUE)