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
更多推荐