如何在R中使用模式匹配的结果

时间:2017-12-05 05:54:45

标签: r regex

我有一个包含字符串值的数据框

id str
a  1
b  10
c  0
d  102
e  010

我需要创建一个标志,如果str中有0,则标志为1,标志为0

我使用以下代码:

df$flag <-ifelse(grep('0', df$str) == "1", 1, 0)

但这会返回的行数少于df中的总行数。

在检查中我发现

grep('0', df$str[1]) returns int(0)

,而     grep(&#39; 0&#39;,df $ str [2])返回1

知道如何使用这个

2 个答案:

答案 0 :(得分:2)

#df$flag <- NULL #unneeded. skip it.
df$flag <- ifelse(grepl('0',df$str), 1, 0)

您需要grepl而不是grep

答案 1 :(得分:1)

您可以像这样使用grepl

df <- read.table(text = "id str
a  1
b  10
c  0
d  102
e  010", header = T)

df$Flag <- ifelse(grepl(0,df$str), 1, 0)

> df
  id str Flag
1  a   1    0
2  b  10    1
3  c   0    1
4  d 102    1
5  e  10    1