【发布时间】:2021-07-20 05:37:57
【问题描述】:
我有一个data.frame,其中每一行都是一个线性区间——具体来说,这些区间是染色体上的开始和结束坐标(下面的chr):
df <- data.frame(chr = c("chr1","chr2","chr2","chr3"),
strand = c("+","+","-","-"),
start = c(34,23,67,51),
end = c(52,49,99,120),
stringsAsFactors = F)
染色体有两条链,因此有strand 列。
我想spread 这些间隔的宽度为 1,从而将 start 和 end 列替换为 position 列。到目前为止,我正在使用这个:
spread.df <- do.call(rbind,lapply(1:nrow(df),function(i)
data.frame(chr = df$chr[i], strand = df$strand[i], position = df$start[i]:df$end[i], strand = df$strand[i], stringsAsFactors = F)
))
但是对于我拥有的间隔数量和它们的大小来说,它有点慢。所以我的问题是是否有更快的选择。
【问题讨论】:
标签: r intervals spread genomicranges iranges