r - 比较两个数据帧之间 xy 值的位置
问题描述
我有两个数据框(A 和 B),每个都有 x 和 y 坐标列。对于 A 中的给定行,我想知道 B 中的任何地方是否有一行(或多行)具有 B(X) 和 B(Y) 的值,每个值都在 +/- 0.2 的范围内A(X) 和 A(Y) 中的值。我还需要知道这一行在 B 中的位置。
示例数据:
AX<-c(1:5)
AY<-c(1.2,2.2,3.5,4.3,5.5)
A<-data.frame(AX, AY)
BX<- c(0.8,0.9,3.8,6,2.1)
BY<- c(1.1,1.4,4,7,2.4)
B<-data.frame(BX,BY)
解决方案是这样的:
对于 A 的第 1 行 - B 的第 1 行和第 2 行在范围内
对于 A 的第 2 行 - B 的第 5 行在范围内
对于 A 的第 3 行-范围内没有 B 的行,
等等。
本质上,我试图在 B 中找到靠近 A 中 xy 点的 xy 点。
解决方案
这是使用基础 R 的一种方法:
lapply(asplit(A, 1), function(x) which(rowSums(abs(sweep(B, 2, x)) <= 0.2) == 2))
#[[1]]
#[1] 1 2
#[[2]]
#[1] 5
#[[3]]
#integer(0)
#[[4]]
#integer(0)
#[[5]]
#integer(0)
推荐阅读
- android - Android Studio 无法识别 Gradle 版本
- javascript - 如果没有链接如何获取文件
- assembly - 程序集 - 如何在 UEFI 中设置图形模式(无 VGA、无 BIOS、不推荐使用)
- java - 如何测试输入是否为字符串(Java)
- node.js - 如何在 app.get() node.js/express 中插入逻辑?
- php - 我用于使用 GeoLite City 数据库识别用户位置的 php 代码仅部分工作。有人可以看看吗?
- swift - 子类化 UIView
- html - 如何将图像放在彼此旁边
- swift - 测试模块时重置单例状态
- typescript - TypeScript:在项目之间共享代码的最简单方法