我可以使用%in%来搜索和匹配两列吗?

时间:2017-04-27 11:02:39

标签: r

我有一个大型数据框,我有一个向量来提取感兴趣的术语。对于我之前使用的项目:

a=data[data$rn %in% y, "Gene"]

将信息提取到新的载体中。现在我有另一份工作,我喜欢这样做。 我有一个15列和> 100000行的大型数据框。我想在第3列和第9列中搜索向量中的内容并将其打印为新的数据帧。

为了使这个额外烦人,击中可能是v3而不是v9,反之亦然。

工作示例

我已将数据帧条带化为3列和几行。

data <- structure(list(Gene = structure(c(1L, 5L, 3L, 2L, 4L), .Label = c("ibp","leuA", "pLeuDn_02", "repA", "repA1"), class = "factor"), LocusTag = structure(c(1L,2L, 5L, 3L, 4L), .Label = c("pBPS1_01", "pBPS1_02", "pleuBTgp4","pleuBTgp5", "pLeuDn_02"), class = "factor"), hit = structure(c(2L,4L, 3L, 1L, 5L), .Label = c("2-isopropylmalate synthase", "Ibp protein","ORF1", "repA1 protein", "replication-associated protein"), class = "factor")), .Names = c("Gene","LocusTag", "hit"), row.names = c(NA, 5L), class = "data.frame")

y <- c("ibp", "orf1")

1 个答案:

答案 0 :(得分:1)

首先,R区分大小写,所以你的例子不会收集第三行,但我想你想要提取。所以你必须将你的y改为

y <- c("ibp", "ORF1")

从你的例子中确定我试着看看你想要实现什么我不确定这是否真的是你想要的但R知道运算符|为“或”所以你可以尝试类似的东西:

new.data<-data[data$Gene %in% y|data$hit %in% y,]

如果您只想提取数据集的某些列,可以在“,”之后指定它们,例如:

new.data<-data[data$Gene %in% y|data$hit %in% y, c("LocusTag","Gene")]