如何选择具有特定标题的几列

时间:2019-04-17 23:29:14

标签: r

我有一个数据集,其中包含具有各种元素及其错误的列

(例如Pb,Pb误差,Cu,Cu。误差,Zn,Zn误差,Fe,Fe误差)。

如何按名称选择多个列(例如,我要选择Pb,Pb.error,Zn,Zn.error)?

我尝试过:

subset(myData, select = (grep("Pb", dataTitle)))

对一个元素及其错误都适用(我可以选择Pb和Pb错误)。

但不适用于多个元素及其错误:

subset(myData, select = (grep("Pb", dataTitle)|grep("Zn", dataTitle)))

上面的代码显示了我拥有的所有元素(即,它无法选择任何特定的列)。我很困惑,不知道背后的原因。

我也尝试过

subset(myData, select = c("Pb","Pb.Error","Zn","Zn.Error"))

这对我来说非常有效,但是我想知道是否可以简化一下,因为我相信可以同时选择“ Pb”和“ Pb.error”。

3 个答案:

答案 0 :(得分:0)

提出这个问题后1分钟我才得到答案。 如果仅在grep函数中使用“ Pb | Zn”,那很容易

subset(myData, select(grep("Pb|Zn", dataTitle)))

那对我来说很完美。

答案 1 :(得分:0)

这同样适用,除​​非您专门尝试通过将error列与它们各自的数据列相关联来调用它们:

myData[,c("Pb","Pb.Error","Zn","Zn.Error")]

答案 2 :(得分:0)

这是对正则表达式有更多限制的另一种方式:

df <- tibble(
  Pb = NA, Pb.error = NA, Cu = NA, Cu.error = NA, Zn = NA, Zn.error = NA, Fe = NA, Fe.error = NA
)

df[, grepl("^(Pb|Zn).*$", names(df))]
相关问题