我正在研究一个包含数百个样本的基因表达数据集。数据框中的每个样本都具有唯一的列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"的所有列。在标题中。
感谢您的帮助!
答案 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