当字符在字符串中出现多次时标记

Flag when character appears more than once in a string

我看到 Python 的类似回答,但 R 没有。假设我有下面的示例数据,我想创建“想要”列,当字符“|”时标记在“var1”列的字符串中出现不止一次。我将如何在 R 中执行此操作?我知道我可以使用 grepl 标记任何时候“|”出现了,但是这也会在它只出现一次时捕获。

示例数据:

var1<-c("BLUE|RED","RED|BLUE","WHITE|BLACK|ORANGE","BLACK|WHITE|ORANGE")
want<-c(0,0,1,1)
have<-as.data.frame(cbind(var1,want))


var1                 want
BLUE|RED              0
RED|BLUE              0
WHITE|BLACK|ORANGE    1
BLACK|WHITE|ORANGE    1
可以使用

str_count——统计|的个数(元字符——所以转义(\)或者指定为fixed,然后创建一个逻辑向量(> 1), 逻辑转二进制(as.integer or +)

library(stringr)
have$want <- +(str_count(have$var1, fixed("|") ) > 1)