R根据列名提取/筛选列

A little thought

刚入行的生信小白,还有很多R语使用不熟练。打算把常用的有用的记录在blog,以后就不用再重新百度谷歌了。也希望可以帮助到正在寻找答案的uu们

当列太多想进行筛选的时候用index不是很方便,根据列名会更方便一点

1. grepl

df= read.csv('~/PD/normalization/ne/ne_0922.csv') #导入文件

df2<- df[,grepl("UserID|NEFL|CCL27|GPNMB|GGT5|DPEP1", colnames(df))] #提取列

这个方法适合提取列不是很多的情况。尝试用这个提取多列,代码太长不方便(回车下一行的话运行出来的df缺少一列,不知道是这个语法的限制必须在一行,还是我操作不当)

如果有列名match不上,R不会报错,新生成的df会自动忽略对不上的名字。所以对提取出来的列/数据集要检查一下数量是否对的上

2. %in%

df=  read.csv('~/PD/代谢/neg/ms2/negT_m.CSV', check.names = F)

cols_remain2<- c("ID",".alpha.-Guanidinoglutaric acid","Acamprosate","5,2'-O-dimethylcytidine",
                 "1-Salicylate glucuronide","N6-Acetyl-L-lysine","Alpha-N-Phenylacetyl-L-glutamine",
                 "Indoleacetic acid",	"Homocitrate","Phenol","4-Pyridoxic acid") #列名
                 
newdf<- df[ ,colnames(df) %in% cols_remain2]

%in% 可以判断前面一个向量内的元素是否在后面一个向量中,可以使用这个语法提取前一个向量中的值

3. 根据index 提取列

如果很明确的知道想要的是第几列或哪几列

df<-df [,c(1:3)] #取数据集第1到3列
df<-df [,-c(2:7)] #删除数据集第2到7列


Done

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐