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

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

提问人:cn838 提问时间:7/13/2021 最后编辑:akruncn838 更新时间:7/14/2021 访问量:77

问:

与 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
      )
  }

apply 函数

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
  )
}

我查看了几个来源,包括“R 动手编程指南”(第 131 页)和以下帖子布尔运算符 && 和 || 但无法找到更简单的解决方案。

r 布尔逻辑

评论


答:

2赞 akrun 7/13/2021 #1

只需使用而不是%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