1

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

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

但是如果我想使用 "lung" 的嵌套 grep 语句获得相同的结果,我不会得到第二个结果。有任何想法吗?

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

如果我想稍微扩展一下并分配一个列,比如“lung_flag”,它会在第 1 行和第 4 行的匹配项旁边放置一个类似“Y”的东西,最好如何做到这一点?

4

1 回答 1

2

像这样:

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

或者

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

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

grepl返回一个逻辑向量:c(TRUE, FALSE, FALSE, TRUE, FALSE)

于 2013-11-01T17:17:06.727 回答