Доступ к списку и сохранение их в файлы

#r #list

Вопрос:

Объект, который я пытаюсь сохранить, — это тот, который создается после аннотирования области chipseeker библиотекой

 class(peakAnnoList)
[1] "list"
 

Поэтому, если я попытаюсь увидеть данные внутри объекта, я получу вот так

 peakAnnoList
$DOWN
Annotated peaks generated by ChIPseeker
9458/9458  peaks were annotated
Genomic Annotation Summary:
             Feature Frequency
5           Promoter 12.359907
1           1st Exon  1.776274
4         Other Exon  5.783464
3 Downstream (<=300)  1.733982
2  Distal Intergenic 78.346373

$High
Annotated peaks generated by ChIPseeker
15395/15395  peaks were annotated
Genomic Annotation Summary:
             Feature Frequency
5           Promoter  7.392010
1           1st Exon  1.779799
4         Other Exon  7.417993
3 Downstream (<=300)  2.949009
2  Distal Intergenic 80.461189

$Low
Annotated peaks generated by ChIPseeker
6043/6043  peaks were annotated
Genomic Annotation Summary:
             Feature Frequency
5           Promoter  8.406421
1           1st Exon  1.472778
4         Other Exon  4.517624
3 Downstream (<=300)  1.373490
2  Distal Intergenic 84.229687

$UP
Annotated peaks generated by ChIPseeker
16628/16628  peaks were annotated
Genomic Annotation Summary:
             Feature Frequency
5           Promoter  9.123166
1           1st Exon  1.677893
4         Other Exon  7.373106
3 Downstream (<=300)  3.103199
2  Distal Intergenic 78.722637
 

Таким образом, это похоже на каждую категорию, которую я прокомментировал.

Теперь, чтобы получить доступ к дополнительной информации и сохранить их в кадре данных, я должен сделать вот так

 UP <- as.data.frame(peakAnnoList[["UP"]]@anno) 
DOWN <- as.data.frame(peakAnnoList[["DOWN"]]@anno)
High <-  as.data.frame(peakAnnoList[["High"]]@anno)
Low <- as.data.frame(peakAnnoList[["Low"]]@anno)
 

Как сохранить это в отдельные файлы

Любое предложение или помощь были бы действительно полезны

Ответ №1:

Вы можете использовать любое из семейства функций для записи csv для каждого элемента списка peakAnnoList .

Вот пример С. Map

 Map(function(x, y) write.csv(x@anno, y, row.names = FALSE), 
    peakAnnoList, paste0(names(peakAnnoList), '.csv'))
 

Это должно создать новые csv-файлы с именами UP.csv и т. DOWN.csv Д. В рабочем каталоге.

То же самое можно достичь с purrr::imap помощью .

 purrr::imap(peakAnnoList, ~readr::write_csv(.x@anno, paste0(.y, '.csv')))
 

Комментарии:

1. purrr::imap(peakAnnoList, ~readr::write_csv(.x@anno, paste0(.y, ‘.csv’))) первый отлично работает, в нем говорится: «Ошибка в write_delim(x, файл, delim = «,», na = na, добавить = добавить, col_names = col_names, : is.data.frame(x) не соответствует ДЕЙСТВИТЕЛЬНОСТИ»