R - 如何在字符串数组中搜索字符串

时间:2017-10-07 11:54:03

标签: r string

我有一张如下表:

X   Y
a   kite
b   kiterunner
c   skite
d   sklite
e   skiter
f   runner

现在,我需要搜索风筝,我找到它的每一行,我需要添加一个带有“Yay”的Z列,否则为“Nay”。基本上以下是输出:

X   Y           Z
a   kite        Yay
b   kiterunner  Yay
c   skite       Yay
d   sklite      Nay
e   skiter      Yay
f   runner      Nay

我试过了grep,但它搜索了所有“Yay”的整个列。我想我在这里遗漏了一些基本的东西,但无法弄明白......几乎24小时都没有睡觉。请帮忙。

我的代码现在:

Table$Z <- ifelse(grep("kite", Table$Y), "Yay", "Nay")

2 个答案:

答案 0 :(得分:2)

您需要grepl代替grep

Table$Z <- ifelse(grepl("kite", Table$Y), "Yay", "Nay")

结果:

> Table
  X          Y   Z
1 a       kite Yay
2 b kiterunner Yay
3 c      skite Yay
4 d     sklite Nay
5 e     skiter Yay
6 f     runner Nay

或建议lmo:

c("Yay", "Nay")[grepl("kite", Table$Y) + 1L]

答案 1 :(得分:1)

我们可以在没有任何ifelse

的情况下执行此操作
df1$Z <- with(df1, c("Nay", "Yay")[grepl("kite", Y)+1])
df1$Z
#[1] "Yay" "Yay" "Yay" "Nay" "Yay" "Nay"