使用布尔运算符“|”时缩短代码的建议在 R 中准备数据时

Suggestions for Shortening code when using Boolean Operator "|" when preparing data in R

与 R 中的许多东西一样,有多种方法可以测试标准集是否包含所需的值。 我正在寻找减少下面指示的代码量的建议。所需 结果已提供

library(dplyr)
df.test=data.frame(
  L=c("A","B","C"),
  num=c(1,2,3),
  num2=c(1,2,3)
)

什么有效,但有点麻烦。


myfun.=function(L){
     case_when(
        L == "A" | L ==  "B" | L ==  "C"  ~ 1 # this is the conditional statement i am seeking to reduce
      )
  }

应用函数

df.test %>% mutate(
  +     result=myfun.(L)
  +    )

期望的输出

L num num2 result
1 A   1    1      1
2 B   2    2      1
3 C   3    3      1

我尝试过但没有用的方法。

l=list(c("A","B","C"))

myfun.=function(L){
  case_when(
    L == all( L %in% l)  ~ 1
  )
}

我查看了多个来源,包括 'Hands on Programing Guide with R'(第 131 页)和以下 post Boolean operators && and ||,但无法找到更简单的解决方案。

只需使用 %in% 而不是 ==

library(dplyr)
df.test %>% 
     mutate(result =  +(L %in% c("A", "B", "C")))

-输出

 L num num2 result
1 A   1    1      1
2 B   2    2      1
3 C   3    3      1