如何计算大型数据帧的欧几里德距离(并仅保存摘要)

2023-12-06

我编写了一个简短的“for”循环来查找数据帧中每一行与所有其他行之间的最小欧几里德距离(并记录哪一行最接近)。理论上,这可以避免与尝试计算非常大的矩阵的距离度量相关的错误。然而,虽然内存中保存的内容不多,但对于大型矩阵来说速度非常慢(我的约 150K 行的用例仍在运行)。

我想知道是否有人可以在使用 apply 或类似功能矢量化我的函数方面为我提供建议或指出正确的方向。对于看似简单的问题表示歉意,但我仍在努力以矢量化的方式思考。

预先感谢(以及您的耐心)。

require(proxy)

df<-data.frame(matrix(runif(10*10),nrow=10,ncol=10), row.names=paste("site",seq(1:10)))

min.dist<-function(df) {  
 #df for results
 all.min.dist<-data.frame()
 #set up for loop 
 for(k in 1:nrow(df)) {
     #calcuate dissimilarity between each row and all other rows
     df.dist<-dist(df[k,],df[-k,])
     # find minimum distance
     min.dist<-min(df.dist)
     # get rowname for minimum distance (id of nearest point)
     closest.row<-row.names(df)[-k][which.min(df.dist)]
     #combine outputs
     all.min.dist<-rbind(all.min.dist,data.frame(orig_row=row.names(df)[k],
     dist=min.dist, closest_row=closest.row))
    }
 #return results
 return(all.min.dist)
                        } 
 #example
 min.dist(df)

这应该是一个好的开始。它使用快速矩阵运算并避免不断增长的对象构造,这两者都在评论中建议。

min.dist <- function(df) {

  which.closest <- function(k, df) {
    d <- colSums((df[, -k] - df[, k]) ^ 2)
    m <- which.min(d)
    data.frame(orig_row    = row.names(df)[k],
               dist        = sqrt(d[m]),
               closest_row = row.names(df)[-k][m])
  }

  do.call(rbind, lapply(1:nrow(df), which.closest, t(as.matrix(df))))
}

如果这仍然太慢,作为建议的改进,您可以计算距离k一次指向一个点而不是单个点。的大小k需要在速度和内存使用之间进行折衷。

Edit:另请阅读https://stackoverflow.com/a/16670220/1201032

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算大型数据帧的欧几里德距离(并仅保存摘要) 的相关文章

  • 将命名参数列表传递给函数?

    我想编写一个小函数来从适当的分布生成样本 例如 makeSample lt function n dist params values lt makeSample 100 unif list min 0 max 10 values lt m
  • 返回数据帧 R 中的下一行

    我有一个看起来像这样的数据框 kind datetime book 2016 04 23 04 23 00 pen 2016 04 23 04 30 00 toy 2016 04 23 06 45 00 我想为数据集中的每一行返回下一行的日
  • 从 for 循环中的 if else 语句的最后一行提取信息 Python

    我认为这是不可能的 但我想我会问以防万一 所以我试图编写一个内存高效的 p ython 程序来解析通常大小为 100 gigs 的文件 我想做的是使用 for 循环读取一行 多次分割不同的字符并将其全部写入同一个循环中 诀窍是该文件包含以
  • R 中具有稳健回归的异常值

    我正在使用lmrobR 中的函数使用robustbase用于稳健回归的库 我会把它用作 rob reg lt lmrob y 0 dat method MM control a1 当我想返回我使用的摘要时summary rob reg 稳健
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • 互补DNA序列

    我在编写这个循环时遇到问题 它似乎在第二个序列之后停止了 我想返回给定 DNA 序列的互补 DNA 序列 例如 AGATTC gt TCTAAG 其中 A T 和 C G def get complementary sequence dna
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • R 中的快速 QR 分解

    我有大量矩阵 需要对其执行 QR 分解并存储生成的 Q 矩阵 进行归一化 以便 R 矩阵在其对角线上具有正数 除了使用之外还有其他方法吗qr 功能 这是工作示例 system time Parameters for the matrix t
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 在 R 中绘制 Likert 变量的堆积条形图

    假设我有一个如下所示的数据框 P Q1 Q2 1 1 4 1 2 2 3 4 3 1 1 4 其中的列告诉我哪个人相应地回答了问题 q1 q2 中的哪一个 这些问题需要按照 4 分李克特量表进行回答 例如 批准 表示 1 稍微批准 表示 2
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt

随机推荐

  • 从内存中运行可执行文件

    我正在尝试直接从该可执行文件的 byte 表示形式作为 C 中的资源运行该可执行文件 所以基本上我想直接运行PE的一个字节 而不接触硬盘 我为此使用的代码曾经有效 但现在不再有效 该代码创建一个具有冻结主线程的进程 更改整个进程数据 最后恢
  • 设置文本视图+编辑文本+按钮

    我想在同一行中放置一个 TextView Edittext 和一个按钮 但我遇到的问题是该按钮未正确向左对齐 并且在小屏幕中 edittext 被整个填充 Small screen Big Screen 我的编码如下
  • 另一个 JNI、C++、DLL、UnsatisfiedLinkError

    我已经找了两天了 没有任何解决方案可以帮助我 所以我们再次开始 如何修复 JNI 中的 UnsatisfiedLinkError 这是我的java代码 package org lingenio util import java util p
  • typescript 静态类型检查 ES 模块导出

    是一种静态类型检查 es 模块导出的方法吗 作为code描述如下 file ts export const x 4 export const y whatever export const foo gt 2 the interface de
  • 用于操作的 MVC [HttpPost/HttpGet]

    我正在使用 MVC C 有人可以举例说明为什么要使用 HttpPost HttpGet 对于一个动作 一个活性物如何能两者兼得 实际用途是什么 假设你有一个Login为用户提供登录屏幕的操作 然后在用户提交表单后接收回用户名和密码 publ
  • Hyperledger Fabric 1.4:如何测试和验证 Fabric Node SDK 中的 registerChaincodeEvent 函数?

    我目前在添加资产时从我的链代码发出一个事件 async addRequestNode ctx sampleAssetId sampleData console info Adding Sample Asset await ctx stub
  • 静态变量与单例变量

    我正在制作 Java REST 应用程序 我想知道我应该如何实现我的服务 我应该为整个应用程序使用静态服务变量还是像 Spring MVC 中那样将服务作为单例 单例对象和在应用过程中只初始化一次对象有什么区别吗 如果您想要一些实用方法或常
  • blazor 托管模板项目在发布应用程序后不起作用

    我从 dotnet CLI 创建一个新的 blazor 托管项目 名为 foo dotnet new blazorwasm hosted 我运行应用程序 dotnet run c Release 请求 https localhost 500
  • 当焦点文本输入反应本机时,滚动视图无法滚动

    我在 ScrollView 中有一个 TextInput 当 TextInput 获得焦点时 滚动不起作用 此问题仅影响 Android setting
  • 使用多个 MergedDictionaries 时,为什么样式在 wpf 运行时不起作用?

    如果我多次使用 MergedDictionaries 来定义样式 它在运行时不起作用 但在 VS2010 的 WPF 设计器中它可以起作用 如果在运行时使用代码加载 MergedDictionaries 它也可以工作 为什么会发生这种情况
  • 在 Windows 上构建 Xcode 项目

    我需要在 Windows 上编译 Xcode 项目 我不需要制作一个 因为它是自动生成的 我是 iOS 开发新手 我不打算提交到 App Store 或支付 Apple 100 美元来签名 我只是想构建一个可以安装在我的越狱设备上的 IPA
  • 当用户移动地图时捕获bounds_changed事件,但不捕获setCenter方法

    我想在用户移动地图 更改缩放时监听 bounds changed 事件 但我不希望当我的程序调用 setCenter 或 setZoom 方法时触发它 所以我尝试在设置中心之前删除事件 然后再次添加它 但是 这没有用 我的活动仍在被解雇 v
  • VS 2010:状态栏上的++文件符号是什么?

    我正在尝试在我的 Win 7 Pro 开发盒上的 XP 虚拟机中运行 VS 2010 它基本上可以工作 但是当在这种环境中实际编辑代码时 我的编辑能力会不断停止并在很长一段时间内断断续续 例如 每 50 秒的运行环境就会暂停 20 秒 这台
  • 如何使用 JQuery 重定向,加载另一个页面但在请求中发送一些 POST 参数?

    如何使用 JQuery DOJO 或纯 JavaScript 进行重定向 加载另一个页面但在请求中发送一些 POST 参数 这应该有效 但我还没有测试过 function postData url data var form
  • 什么是C本地函数声明机制?

    gcc 中似乎允许本地函数声明 我发现了对此的讨论 局部函数声明有什么用处吗 但是 我的问题是 ISO C 标准允许吗 如果是的话 如何解释以下令人费解的现象 int main void int f void f void g void g
  • Hashtable 中最大值的键

    嗨我有以下对象 Hashtable
  • Java应用程序使用系统中的最大可用内存

    有 Xmx 和 max heap size jnlp 选项来设置 java 应用程序可以使用的最大内存 如果未指定这些选项 则仅允许应用程序使用系统中少量的可用物理内存 这就是人们使用 Xmx 来允许应用程序使用更多内存的原因 但这对我来说
  • 如何在 Windows 批处理文件中回显 >>someText

    我想将确切的文本 gt gt someText 打印到控制台 I try echo abb gt gt cdd eee 但这不会打印任何内容并创建文件cdd里面有 abb 文本 我应该使用什么语法echo为了那个原因 你必须 转义 特殊字符
  • ELB 使用带有自签名证书的 HTTPS 到后端服务器

    我希望设置一个使用 HTTPS 与后端服务器通信的 ELB 我正在尝试使用单个后端服务器设置概念验证 但似乎无法让 ELB 与服务器通信 我几乎可以肯定这是一个证书问题 因为任何没有 SSL 的设置都可以完美运行 我该如何设置 我尝试了多个
  • 如何计算大型数据帧的欧几里德距离(并仅保存摘要)

    我编写了一个简短的 for 循环来查找数据帧中每一行与所有其他行之间的最小欧几里德距离 并记录哪一行最接近 理论上 这可以避免与尝试计算非常大的矩阵的距离度量相关的错误 然而 虽然内存中保存的内容不多 但对于大型矩阵来说速度非常慢 我的约