R 打印基于满足范围的列表
如果满足某些值,我想在列表中生成字符串输出。我有一张这样的桌子:R 打印基于满足范围的列表,r,list,data.table,iranges,R,List,Data.table,Iranges,如果满足某些值,我想在列表中生成字符串输出。我有一张这样的桌子: grp V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 1: 1 go.1 142 144 132 134 0 31 11 F D T hy al qe 34 6 3 2: 2 go.1 313 315 303 305 0 31 11 q z t hr ye er 29
grp V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17
1: 1 go.1 142 144 132 134 0 31 11 F D T hy al qe 34 6 3
2: 2 go.1 313 315 303 305 0 31 11 q z t hr ye er 29 20 41
3: 3 go.1 316 318 306 308 0 31 11 f w y hu er es 64 43 19
4: 4 go.1 319 321 309 311 0 31 11 r a y ie uu qr 26 22 20
5: 5 go.1 322 324 312 314 0 31 11 g w y hp yu re 44 7 0
我正在使用此函数生成所需的输出:
library(IRanges); library(data.table)
rangeFinder = function(x){
x.ir = reduce(IRanges(x$V2, x$V3))
max.idx = which.max(width(x.ir))
ans = data.table(out = x[1,1],
start = start(x.ir)[max.idx],
end = end(x.ir)[max.idx])
return(ans)}
rangeFinder(x.out)
out start end
1: 1 313 324
我还想在rangeFinder的开始和结束输出之间生成一个包含字母(来自V9-V11列)的列表
例如,输出应该如下所示
out
[[go.1]]
[1] "qztfwyraygwy"
测距仪正在查看第V2列和第V3列中的值,并打印最长匹配的数字。请注意,即使测距仪从313-324(而不是从142-324)生成输出,列表输出中也不包括“FDT”。如何获得所需的输出?
reduce
有一个带有.revmap的参数,用于向对象添加“元数据”列(可通过mcols()
访问)。这与每个缩减范围相关联的是映射到缩减范围的原始范围的索引,作为一个IntegerList
类,基本上是一个列表,其中所有元素都保证为整数向量。这些是你感兴趣的行
ir <- with(x, IRanges(V2, V3))
r <- reduce(ir, with.revmap=TRUE)
i <- unlist(mcols(r)[which.max(width(r)), "revmap"])
是一个替代品。我似乎没有.revmap的功能
我收到了这个错误。.local(x,…)中出错:未使用的参数(with.revmap=TRUE)@user3141121是的,这与当前的Bioconductor有关,在使用R-3.1时可用(从昨天开始!)我知道了。3.0有什么解决办法吗?我不想更新,因为我的所有其他库也需要更新
j <- paste0("V", 9:11)
paste0(as.matrix(x[i, j, drop=FALSE]), collapse="")
h = findOverlaps(ir, r)
i = queryHits(h)[subjectHits(h) == which.max(width(r))]