R中字符值的OR函数

R中字符值的OR函数,r,R,我想检查数据帧的变量是否至少包含一个值。我想要OR函数的R等价物,看起来像这样(这里的OR函数显然是错误的) 损失$League如果损失$Drawed,则将具有“Highschool”值。From包含“Academy”或“H.S.”,否则具有“No Highschool”值 我不熟悉R,英语不是我的第一语言,如果我的问题不太清楚,我很抱歉。使用(或)运算符如下: mydf$lost <- ifelse(lost$Drafted.From == "Academy" | lost$Drafte

我想检查数据帧的变量是否至少包含一个值。我想要OR函数的R等价物,看起来像这样(这里的OR函数显然是错误的)

损失$League
如果
损失$Drawed,则将具有“Highschool”值。From
包含“Academy”或“H.S.”,否则具有“No Highschool”值

我不熟悉R,英语不是我的第一语言,如果我的问题不太清楚,我很抱歉。

使用
(或)运算符如下:

mydf$lost <- ifelse(lost$Drafted.From == "Academy" | lost$Drafted.From == "H.S.", "Highschool", "Not highschool")

mydf$lost这一切都取决于对“contains”一词的解释。如果
Drawed.From
列仅包含单个单词或完整(精确)匹配,则垂直管道
|
或%
运算符中的
%就足够了。否则您将需要
grepl

一些示例数据:

lost <- data.frame(drafted.from.1 = c('Academy','College','H.S.'),
                   drafted.from.2 = c('He studied at the Academy','She went to College','He attended Dartmore H.S.'))
这给出了正确的结果:

[1] "Highschool"     "Not highschool" "Highschool"    
[1] "Highschool"     "Not highschool" "Highschool"    
> ifelse(lost$drafted.from.2 %in% c("Academy","H.S."), "Highschool", "Not highschool")
[1] "Not highschool" "Not highschool" "Not highschool"
但在这种情况下,
grepl
也起作用:

> ifelse(grepl("Academy|H.S.", lost$drafted.from.1), "Highschool", "Not highschool")
[1] "Highschool"     "Not highschool" "Highschool"    
对于
drafted.from.2
列,您需要
grepl
来分配
Highschool
Not Highschool
值:

ifelse(grepl("Academy|H.S.", lost$drafted.from.2), "Highschool", "Not highschool")
这给出了正确的结果:

[1] "Highschool"     "Not highschool" "Highschool"    
[1] "Highschool"     "Not highschool" "Highschool"    
> ifelse(lost$drafted.from.2 %in% c("Academy","H.S."), "Highschool", "Not highschool")
[1] "Not highschool" "Not highschool" "Not highschool"
关于从.2
列中起草的
,%
中的
%将不会给出正确的结果(或使用
|
或运算符):

[1] "Highschool"     "Not highschool" "Highschool"    
[1] "Highschool"     "Not highschool" "Highschool"    
> ifelse(lost$drafted.from.2 %in% c("Academy","H.S."), "Highschool", "Not highschool")
[1] "Not highschool" "Not highschool" "Not highschool"
现在,让我们将这些知识应用于数据帧:

lost$League.1 <- ifelse(lost$drafted.from.1 %in% c("Academy","H.S."), "Highschool", "Not highschool")
lost$League.2 <- ifelse(grepl("Academy|H.S.", lost$drafted.from.2), "Highschool", "Not highschool")

grep*
中,您使用垂直管道
|
进行或-
grepl(“Acadamny | H.S.”,x)
(其中x是您正在搜索的数据),您不需要像我所示进行grepl调用。@khrm是的,您需要
grep
/
grepl
,因为
丢失了$Drafted.
可以包含单词“Academy”或“H.S”@这是一个非常简单的问题。不需要grep。我的问题给了我正确的答案。你也可以使用grep。但我通常在使用正则表达式时使用它。@khrm它取决于对“contains”一词的解释。请参阅我的答案以获得解释。