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