我正在尝试使用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',那么最好怎样做?
答案 0 :(得分:2)
像这样:
df[grep("lung", df$site), ]
或
df[grepl("lung", df$site), ]
grep
返回带匹配的索引向量:c(1, 4)
,
grepl
返回逻辑矢量:c(TRUE, FALSE, FALSE, TRUE, FALSE)
。