Как я могу создать кадры данных с именами на основе имен файлов в al oop в R? - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь создать функцию, которая перебирает файлы в моем каталоге, создает несколько фреймов данных с именами на основе имен файлов и записывает вновь созданные фреймы данных в CSV. Однако созданное мной решение работает только для последнего файла в каталоге, но не для всех. Кто-нибудь может указать на мою ошибку?

 ##Peak annotation function for all the files in the directory 
 ##Loading required libraries 
 library(GenomicFeatures)
 library(GenomicRanges)
 library(AnnotationDbi)
 library(ChIPseeker)
 ##Making some annotations 
 hg38_TxDB <- makeTxDbFromGFF("/Users/dari_obukhova/data/Homo_sapiens/UCSC/hg38/Annotation/Genes/genes.gtf")
 saveDb(hg38_TxDB, file = "/Users/dari_obukhova/data/Homo_sapiens/UCSC/hg38/Annotation/TxDB.sqlite")
 hg38_Annotation <- loadDb("/Users/dari_obukhova/data/Homo_sapiens/UCSC/hg38/Annotation/TxDB.sqlite")

 ##Function to use for all the files in the directory 
 all_peaks_files <- list.files(pattern = ".xls", full.names = T)
 for (file in all_peaks_files) {
      peak_list <- list()
      peaks_df <- read.delim(fileName, comment.char = "#")
      peaks_gr <- makeGRangesFromDataFrame(peaks_df, keep.extra.columns = T)
      annotated_peaks_df <- as.data.frame(annotatePeak(peaks_gr, TxDb = hg38_Annotation))
      peak_list[[(length(peak_list) + 1)]] <- annotated_peaks_df
  }
  peak_list

Однако в возвращаемом списке есть только один элемент (файл списка в all_peaks_files). Более того, я не уверен, как переименовать каждый созданный файл, основываясь на каждом указанном c имени файла. Буду признателен за любые предложения! <3 </p>

1 Ответ

0 голосов
/ 11 марта 2020

Всем спасибо за хорошие предложения. Я смог изменить свой код в рабочий. Вот мой модифицированный код.

##Function to annotate some files with peaks generated by CHIPSeq

##Loading necessary libraries 
library(GenomicFeatures)
library(GenomicRanges)
library(AnnotationDbi)
library(ChIPseeker)

##Making some annotations of a used genome 
hESCpeaks_df <- read.delim("H3K27ac_hESC_peaks.xls", comment.char = "#")
hg38_TxDB <- makeTxDbFromGFF("/Users/dari_obukhova/data/Homo_sapiens/UCSC/hg38/Annotation/Genes/genes.gtf")
saveDb(hg38_TxDB, file = "/Users/dari_obukhova/data/Homo_sapiens/UCSC/hg38/Annotation/TxDB.sqlite")
hg38_Annotation <- loadDb("/Users/dari_obukhova/data/Homo_sapiens/UCSC/hg38/Annotation/TxDB.sqlite")

##Annotating all files in the directory 
all_peaks_files <- list.files(pattern = ".xls" )  ##choosing all the files with .xls extension from the working directory
peak_list <- list() ##Empty list for files to be added in 

for (file in all_peaks_files) {
  
  peaks_df <- read.delim(file, comment.char = "#")
  peaks_gr <- makeGRangesFromDataFrame(assign(file, peaks_df), keep.extra.columns = T)
  annotated_peaks_df <- as.data.frame(annotatePeak(peaks_gr, TxDb = hg38_Annotation))
  peak_list[[(length(peak_list) + 1)]] <- assign(file, annotated_peaks_df)
}
peak_list
...