我有一個Start
和End
位置和兩個樣本列(數字)的兩個大文件。從R中不同文件的位置重疊位置
File 1:
Start End Sample1 Sample2
1 60 1 4
100 200 2 1
201 250 1 4
300 450 1 1
File 2:
Start End Sample1 Sample2
40 60 1 1
70 180 1 1
240 330 2 1
340 450 1 4
500 900 1 4
980 1200 2 1
首先,我想借此從第一個文件時Start
和End
位置,使段情節。該圖還必須考慮第一個文件中的每個位置的Start-20
和End+20
。
然後我想從第二文件採取重疊Start
和End
位置和繪製它的上面圖。以這種方式,將會有許多圖形基於來自第一個文件的Start
和End
個位置,並且具有不重疊的位置也將被單獨繪製。
的color
對於每個段將基於兩個樣品編號(例如,在這兩個文件,如果其1 and 4
段的顏色會red
,如果其1 and 1
段的顏色將是等)。
我會很感激,如果有人讓我明白如何使功能這R.
在此先感謝。
PS我附上了輸出的圖紙。我只顯示了兩個結果。
下面是我寫的代碼,但它給出了一個錯誤match.names
錯誤(clabs,姓名(十一)): 名不曾用名
我也需要匹配指定數據集1線段的紅色和數據集2的線段的綠色至 。我將如何在下面的代碼中實現它?
overlap_func <- function(dataset1,dataset2) {
for(i in 1:nrow(dataset1))
{
loop_start <- dataset1[i,"Start"]
loop_end <- dataset1[i,"End"]
p <- dataset2[,c(1,2)]
dataset1_pos <- data.frame(loop_start,loop_end)
dataset2_filter <- p[p$Start >= (loop_start-(loop_start/2)) & p$End <= (loop_end+ (loop_end/2)), ]
data_in_loop <- rbind(dataset1_pos,dataset2_filter)
plot_function(data_in_loop,loop_start,loop_end)
}
}
plot_function <- function(loop_data,start,end){
pos <- 1:nrow(loop_data)
dat1 <- cbind(pos,loop_data)
colnames(dat1) <- c("pos","start","end")
pdf(file=paste0("path where plots are generated","_",start,"-",end,"_","overlap.pdf"))
plot(dat1$pos, type = 'n', xlim = range(c(start-(start/2), end+(end/2))))
segments(dat1$start, dat1$pos, dat1$end, dat1$pos)
dev.off()
}
df1 <- read.table(header=T, text="Start End Sample1 Sample2
1 60 1 4
100 200 2 1
201 250 1 4
300 450 1 1")
df2 <- read.table(header=T, text="Start End Sample1 Sample2
40 60 1 1
70 180 1 1
240 330 2 1
340 450 1 4
500 900 1 4
980 1200 2 1")
overlap_func(df1,df2)
你能大致顯示輸出會是什麼樣子(由畫上一些軟件或掃描抽出的紙嗎?)。這對我來說似乎很有意思,我很樂意嘗試,但是確切地知道你在找什麼是模糊的(或複雜的)。 – Arun
爲什麼這是donwvoted! +1 – agstudy
(+)。 @agstudy,不知道。 – Arun