2017-10-07 35 views
0

我有一个表像下面:的R - 如何在一个字符串数组搜索字符串

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,但它搜索整个列把所有“耶” S。我想我在这里错过了一些基本的东西,但无法真正弄清楚它......几乎24小时没有睡觉。请帮忙。

我现在代码:

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

回答

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] 
+0

太谢谢你了。 – Arani

+1

@lmo谢谢!我把它放在我的答案中 – h3rm4n

1

我们可以做到这一点没有任何ifelse

df1$Z <- with(df1, c("Nay", "Yay")[grepl("kite", Y)+1]) 
df1$Z 
#[1] "Yay" "Yay" "Yay" "Nay" "Yay" "Nay"