【发布时间】:2021-06-20 01:31:41
【问题描述】:
我有 52 个数据文件,每个文件包含两列:蛋白质和丰度。 蛋白质列有一个蛋白质名称,丰度列包含一个数字,显示样品中有多少蛋白质。每个文件中有数千种蛋白质,它们没有按丰度的顺序排列。
例子:
样本 1
| protein | abundance |
|---|---|
| x | 500 |
| y | 300 |
| z | 400 |
样本 2
| protein | abundance |
|---|---|
| x | 300 |
| y | 800 |
| z | 200 |
我想在 R 中编写一个循环来遍历所有 52 个文件,并从每个文件中选择前 2 个最丰富的蛋白质,然后制作一个有 4 列的新数据框(前两个包含两个最丰富的蛋白质的名称,后两个包含这两种蛋白质的丰度值)和 52 行(每个数据文件一行)。
| most abundant protein | second most abundant protein | abundance for MAP | abundance for SMAP | |
|---|---|---|---|---|
| sample1 | protein x | protein z | 500 | 400 |
| sample2 | protein y | protein x | 800 | 300 |
| etc |
到目前为止,我有以下内容:
filelist<- list.files(pattern = ".csv")
dataabund<-''
for(i in 1:length(filelist)){
data <- read.table(filelist[i], header = T)
dataabund [i] <- head(arrange(data, desc(data$abundance)), n = 2)
}
mostabund <- data.frame(filelist, dataabund)
但是,这会创建一个奇怪的数据框,它不会显示丰富度。
任何帮助将不胜感激!
【问题讨论】: