通过列ID字符的子集从df中提取列

时间:2017-02-09 16:36:23

标签: r

我正在研究一个包含数百个样本的基因表达数据集。数据框中的每个样本都具有唯一的列ID(例如:IHC_123的OHC_112)。我想创建一个新的数据框,其中只包含包含" OHC"的列。我怎样才能做到这一点?

我正在努力制作可行的示例数据框......但这是我能做的最好的。

数据框" DF"

        OHC_1   OHC_2   OHC_3   IHC_4   IHC_5   OHC_6
Gene1   1   1   0   1   1   0
Gene2   0   0   0   1   1   0
Gene3   1   1   1   0   0   1
Gene4   1   1   1   0   0   0

我接近使用以下子命令

newDF< - subset(DF ,, select = OHC_1:OHC_3)

这允许我按一系列列对数据帧进行子集化,但不允许我选择包含" OHC"的所有列。在标题中。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

只需使用grepl匹配名称匹配的列?

> DF[, grepl("OHC",names(DF))]
  OHC_1 OHC_2 OHC_3 OHC_6
1     1     1     0     0
2     0     0     0     0
3     1     1     1     1
4     1     1     1     0

答案 1 :(得分:0)

您可以使用negative-grep进行更短的调用:

df.2 <- df[, -grep("^OHC_[1:3]$", names(df) )]

由于grep返回数字,您可以使用负向量索引来删除列。您可以添加更多数量或更复杂的模式。

答案 2 :(得分:0)

我们可以将 var inp = $("#tfa_2685"); select

中的matches一起使用
tidyverse