列出属于每个区域的值的列表

时间:2018-07-27 13:02:26

标签: r list header bioinformatics

我在R中遇到了一些麻烦。我是R的新用户。

所以我有一个看起来像这样的数据框(但更长):

Chromosome  Start  End  Region_type  Region_id  NA
chr1 54159118 54159437 Peak MACS_peak_436 NA
chr1 54159120 54159439 Peak MACS_peak_436 NA
chr1 54159122 54159441 Peak MACS_peak_436 NA
chr1 54159124 54159443 Peak MACS_peak_436 NA
chr1 54159130 54159449 Peak MACS_peak_436 NA
chr1 54165713 54166032 Peak MACS_peak_422 NA

我的第一个问题是我的文件没有标题,我使用以下命令上传文件:

My_data=read.table("/home/toto/test.bed",sep="\t", dec=".",fill=TRUE,header = FALSE)

然后尝试制作这样的标题

names(My_data)=c("chr", "start","end","Region_type","Region_id")

但是当我要专栏文章

My_column<-My_data$Region_type

它不起作用。所以我必须那样做:

My_column<-My_data[,4]

但是我不明白为什么标题不起作用...

我的第二个问题是我要列出所有属于每个区域(MACS_peak_xxx)的克隆(克隆由chrX Start-End表示)。

为此,我尝试了类似的方法:

region_list <- levels(My_data[,4])

region_list_clones <- lapply(region_list, function(x) which( My_data[,4] == x))

我很确定这很容易...

谢谢您的帮助,希望我的例子很清楚:)

1 个答案:

答案 0 :(得分:0)

这个问题尚不清楚,但是我认为您正在寻找split(My_data, My_data[,5])

更新

这将为您提供一个列表,其中包含每个region_id的区域向量。它使用tidyverse

中的tidyrpurrr软件包
My_data %>% unite(region, chr, start, end, sep=',') %>%
  split(.$Region_id) %>%
  map("region")
> $MACS_peak_422
> [1] "chr1,54165713,54166032"

> $MACS_peak_436
> [1] "chr1,54159118,54159437" "chr1,54159120,54159439" "chr1,54159122,54159441" "chr1,54159124,54159443" "chr1,54159130,54159449"