【发布时间】:2021-12-07 14:32:48
【问题描述】:
我有一个这样的数据框(称为“myfile”):
P3170.Tp2 P3189.Tn10 C453.Tn7 F678.Tc23 P3170.Tn10
gene1 0.3035130 0.5909081 0.8918271 0.2623648 0.13392672
gene2 0.2542919 0.5797730 0.4226669 0.9091961 0.96056308
gene3 0.9923911 0.4318736 0.7020107 0.1936181 0.58723105
gene4 0.4113318 0.1239206 0.4091794 0.8196982 0.54791214
gene5 0.4095719 0.6392045 0.4416208 0.8853356 0.01008299
我有一个有趣的字符串列表(称为“interesting.list”),如下所示:
interesting.list <- c("P3170", "C453")
我想使用这个有趣的.list 并通过列标题的部分字符串匹配来子集 myfile。
ss.file <- NULL
for (i in 1:length(interesting.list)){
ss.file[[i]] <- myfile[,colnames(myfile) %like% interesting.list[[i]]]
}
但是,此循环在运行后不提供列标题。 由于我有一个庞大的数据集(超过 30000 行),因此很难手动实现 colnames。有更好的方法吗?
【问题讨论】:
-
查看
grep()。您可以用“|”分隔interesting.list中的每个项目对于单行,不需要循环,例如,df[,grep("P3170|C453", x=names(df))] -
是的,问题是我的有趣列表中有一个巨大的列表(大约 3000 个)。
-
好的!这不应该是我回答中的第二种方法的问题。