在R中的where语句(嵌套grep)中使用grep

时间:2013-11-01 17:14:42

标签: r

我正在尝试使用which作为嵌套的grep语句。例如,如果我在数据框中查找所有肺部数据,可以使用哪个语句简单地完成。

site <- c("lung", "breast", "colon","lung", "brain")

vals <- c(1:5)
df <- data.frame(site,vals)

> df[which(df$site=="lung"),]
  site vals
1 lung    1
4 lung    4

但如果我想用“肺”的嵌套grep语句得到相同的结果,我没有得到第二个结果。有什么想法吗?

> df[which (grep("lung",df$site)==TRUE),]
  site vals
1 lung    1

如果我想延长一点并分配一个列,比如'lung_flag',它会在第1行和第4行的匹配旁边放一个'Y',那么最好怎样做?

1 个答案:

答案 0 :(得分:2)

像这样:

df[grep("lung", df$site), ]

df[grepl("lung", df$site), ]

grep返回带匹配的索引向量:c(1, 4)

grepl返回逻辑矢量:c(TRUE, FALSE, FALSE, TRUE, FALSE)