R - 输出重叠间隔

2023-12-27

fileA包含间隔(开始、结束)以及分配给该间隔的值(值)。

start     end      value
0         123      1      #value 1 at positions 0 to 122 included.
123       78000    0      #value 0 at positions 123 to 77999 included.
78000     78004    56     #value 56 at positions 78000, 78001, 78002 and 78003.
78004     78005    12     #value 12 at position 78004.
78005     78006    1      #value 1 at position 78005.
78006     78008    21     #value 21 at positions 78006 and 78007.
78008     78056    8      #value 8 at positions 78008 to 78055 included.
78056     81000    0      #value 0 at positions 78056 to 80999 included.

fileB包含我感兴趣的间隔列表。我想从中检索重叠间隔fileA。开始和结束不一定匹配。这是一个例子fileB:

start     end      label
77998     78005    romeo
78007     78012    juliet

目标是 (1) 检索区间fileA与重叠的fileB(2) 附加相应的标签fileB。预期结果是(# 指定被丢弃的行,这是为了帮助可视化,并且不会出现在最终输出中):

start     end      value    label
#
123       78000    0        romeo
78000     78004    56       romeo
78004     78005    12       romeo
#
78006     78008    21       juliet
78008     78056    8        juliet
#

这是我编写代码的尝试:

#read from tab-delimited text files which do not contain column names
A<-read.table("fileA.txt",sep="\t",colClasses=c("numeric","numeric","numeric"))
B<-read.table("fileB.txt",sep="\t",colClasses=c("numeric","numeric","character"))

#add column names
colnames(A)<-c("start","end","value")
colnames(B)<-c("start","end","label")

#output intervals in `fileA` that overlap with an interval in `fileB`
A_overlaps<-A[((A$start <= B$start & A$end >= B$start)
              |(A$start >= B$start & A$start <= B$end)
              |(A$end >= B$start & A$end <= B$end)),]

此时我已经得到了意想不到的结果:

> A_overlaps
  start   end value
  #missing
3 78000 78004    56
5 78005 78006     1   #this line should not be here
6 78006 78008    21
  #missing

我还没有编写输出标签的部分,因为我不妨先解决这个问题,但我不知道我错了什么......

[编辑] 我也尝试了以下方法,但它只输出全部fileA:

A_overlaps <- A[(min(A$start,A$end) < max(B$start,B$end)
               & max(A$start,A$end) > min(B$start,B$end)),]

这会产生所需的输出,但可能有点难以阅读

# function to find, if value lies in interval
is.between <- function(x, a, b) {
  (x - a)  *  (b - x) > 0
}

# apply to all rows in A 
> matching <- apply(A, MARGIN=1, FUN=function(x){
# which row fulfill following condition:
+   which(apply(B, MARGIN=1, FUN=function(y){
# first value lies in interval from B or second value lies in interval from B
+     is.between(as.numeric(x[1]), as.numeric(y[1]), as.numeric(y[2])) | is.between(as.numeric(x[2]), as.numeric(y[1]), as.numeric(y[2]))
+     }))
+   })
> 
# print the results
> matching
[[1]]
integer(0)

[[2]]
[1] 1

[[3]]
[1] 1

[[4]]
[1] 1

[[5]]
integer(0)

[[6]]
[1] 2

[[7]]
[1] 2

[[8]]
integer(0)

> 
# filter those, which has 0 length = no matching
> A_overlaps <- A[unlist(lapply(matching, FUN=function(x)length(x)>0)),]
# add label
> A_overlaps$label <- B$label[unlist(matching)]
> 
> A_overlaps
  start   end value  label
2   123 78000     0  romeo
3 78000 78004    56  romeo
4 78004 78005    12  romeo
6 78006 78008    21 juliet
7 78008 78056     8 juliet
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R - 输出重叠间隔 的相关文章

  • R - 在浏览器中获取帮助而不是内置的 R 帮助程序

    我见过 R help 的两种不同行为 当你输入 density例如 帮助已在您的默认浏览器中打开 帮助在内置 R 帮助程序中打开 R 中的窗口 我目前有第二种行为 但我想在浏览器中打开帮助 我可以轻松地在这两种行为之间切换吗 无需重新安装
  • 有没有办法在 RStudio 中调试 RScript 调用?

    假设我从命令行运行 R 脚本 如下所示 Rscript prog R x y z 我想检查某一行的代码 目前 我无法在 RStudio 中以交互方式调试它 因为我不知道如何传递参数 由于它设计为从命令行运行 因此如何通过命令行 RStudi
  • 将密度曲线拟合到 R 中的直方图

    R中有没有可以将曲线拟合到直方图的函数 假设您有以下直方图 hist c rep 65 times 5 rep 25 times 5 rep 35 times 10 rep 45 times 4 看上去很正常 但其实是歪曲的 我想拟合一条倾
  • 如何调整ggplot直方图的时间刻度轴

    我正在使用一个数据框 其中一列包含POSIXct日期时间值 我正在尝试使用绘制这些时间戳的直方图ggplot2但我有两个问题 我不知道如何设置 binwidthgeom histogram 我想将每个垃圾箱设置为一天或一周 我尝试提供 di
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • R 中的发散积分可在 Wolfram 中求解

    我知道我以前问过同样的问题 但由于我是新来的 这个问题问得不好而且不可重现 因此我在这里尝试做得更好 如果我只编辑旧的 可能没有人会读它 我有一个想要积分的二重积分 ff lt function g t exp 16 g exp 8 t t
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • R.matlab/readMat:readTag(this) 中出错

    我正在尝试使用 R matlab 将 matlab 文件读入 R 但遇到此错误 require R matlab r lt readMat file mat verbose T Trying to read MAT v5 file stre
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 为绘图制作 2D 图例 - 双变量分区统计图

    我一直在玩双变量 choropleth 地图 并且一直在如何创建类似于 2d 图例的问题上陷入困境约书亚 史蒂文斯 http www joshuastevens net cartography make a bivariate chorop
  • 为什么这些数字不相等?

    下面的代码显然是错误的 有什么问题 i lt 0 1 i lt i 0 05 i 1 0 15 if i 0 15 cat i equals 0 15 else cat i does not equal 0 15 i does not eq
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug

随机推荐

  • 长整数中单个位的索引(在C中)[重复]

    这个问题在这里已经有答案了 我试图找到一个最佳代码来定位长整数 64 位 中的单个位索引 长整数只有一位设置位 使用C语言 目前 我只是将整个事情移动一位 然后检查零 我读过有关查找表的内容 但它不适用于整个 64 位 我考虑过检查每个 8
  • 将回调方法实现转换为 akka 流源

    我正在与我无法控制的 java 库中的数据发布者合作 发布者库使用典型的回调设置 库代码中的某处 该库是java的 但为了简洁起见 我将在scala中进行描述 type DataType trait DataConsumer def onD
  • 从 AppDelegate 重新加载 tableView

    我有一个非常简单的问题 但我仍在寻找可可的方法 我有一个在 Xcode 中创建的普通 rootViewController 应用程序 在 AppDelegate 中 我有一个更新数据库的函数 当运行时收到推送消息时 didReceiveRe
  • exp init 项目 [11:31:26] zlib:文件意外结束

    当我跑步时exp init Locations它给了我这个错误 npm 6 1 0 exp 55 04 正如 Mandan 所描述的 您还可以导航至 userprofile expo starter app cache文件夹删除blank
  • 如何对占数据 50% 的条形进行着色?

    我正在为一些数据点绘制直方图 其中条形高度是该数据点占整个数据的百分比 x normal size 1000 hist bins np histogram x bins 20 plt bar bins 1 hist astype np fl
  • 从 MS-SQL Server 2008 中的 XML 字段提取值

    我试图从存储在单个 XML 字段中的 MS SQL Server 2008 数据库中提取四条信息 这是我第一次使用 XML 所以我遇到了一些麻烦 这就是为什么我只有要提取的数据 我尝试过使用其他帖子来解决我的问题 但显然没有运气 这四个信息
  • Fiddler 未捕获来自 .Net Core 的流量

    我有一个控制台应用程序 它通过 HTTP HTTPS 调用许多第三方服务 这些服务最初是为在 Net Framework 下运行而编写的 Fiddler 与该版本的应用程序配合良好 捕获所有 HTTP 和 HTTPS 流量 我将应用程序移植
  • Tomcat Jersey Eclipse ClassNotFound org.glassfish.jersey.servlet.ServletContainer

    我正在运行你好世界 http www mkyong com webservices jax rs jersey hello world example 例子 不过我用的是2 7版本 在 maven pom xml 我有
  • 将 symfony 与 postgresql 结合使用

    我正在尝试使用 Symfony 和 PostgreSQL 创建一个网站 我找不到任何说明如何执行此操作的文档 所有文档都假设后端数据库是 mySQL 有人知道该怎么做吗 如果您使用 Doctrine 只需在您的databases yml 中
  • 检测和重定向 SNI 支持的浏览器的最有效代码是什么?

    说吧 我有一个网站mywebsite com 使用 Apache Httpd 托管 现在我想要的是 每当任何用户输入mywebsite com or www mywebsite com如果浏览器支持 SNI 那么它应该重定向到https w
  • 如何检测 32 位 int 的整数溢出?

    我知道这个话题已经被问过好几次了 但是我的问题是关于完整 32 位 int 的溢出 例如 11111111111111111111111111111111 00000000000000000000000000000001 000000000
  • 如何实现仅输入表情符号键盘?

    我想实现自定义条目 Xamarin forms 当用户将焦点放在条目上时 设备将显示表情符号键盘 简短回答 不幸的是 由于 Android 和 iOS 平台的限制 如果不创建自己的键盘是不可能的 长答案 Default behaviour
  • 如何处理实现多个接口的对象的Dtos?

    我们在 WCF 服务接口中使用 Dtos 但当 Dto 表示的业务对象实现多个接口时 我们开始遇到问题 并且我们希望在这些不同的上下文中返回 Dtos 并且还能够处理Dtos 在客户端上是多态的 例如 假设我们有一个接口IBusinessO
  • Android 中的 Proguard 和 Reflection

    我刚刚使用了 proguard 但是我尝试通过反射实例化的类不起作用 我有一个界面 Algorithm 我通过这样的课程 AlgorithmFactory SomeClassThatExtendsAlgorithmImpl class 类是
  • 通过 webpack-dev-server 代理访问时 WordPress 重定向到 siteurl

    这个问题有历史价值 所以我稍微更新一下 这是 Google 中 webpack dev server wordpress redirect 的最高结果 虽然已接受的解决方案适用于 Webpack 2 但它可能不再适用 如果没有的话可以参考我
  • 在 Java HTML 感知组件中使用

    我有以下问题 我使用 JTextPane 显示 HTML 文档 在我的 HTML 文本中有 shy 在 w3 org 上害羞 http www w3 org TR html4 sgml entities html进行软连字符 我的问题是 没
  • CORS 错误 Angular 2 + Express Node

    正面 角度2 public googlesearch ev Event this http get https maps googleapis com maps api place autocomplete json input ev ta
  • 简洁地声明和初始化指针(即指向 int 的指针)

    给定指向 char 的指针 可以执行以下操作 char s data 据我了解 这里声明了一个指针变量 为变量和数据分配了内存 后者填充了data 0并且所讨论的变量被设置为指向它的第一个字节 即变量包含可以取消引用的地址 这是短而紧凑的
  • 是否可以防止 C 中的宏参数出现重复、相同的情况?

    有一定的rare在这种情况下 防止宏的重复参数可能很有用 拿着它ELEM value https stackoverflow com a 24837037 432509 macro 检查是否value或者是A B or C if ELEM
  • R - 输出重叠间隔

    fileA包含间隔 开始 结束 以及分配给该间隔的值 值 start end value 0 123 1 value 1 at positions 0 to 122 included 123 78000 0 value 0 at posit