繁体   English   中英

使用布尔运算符“|”时缩短代码的建议在 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
  )
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM