将函数应用于 R 中的距离矩阵

2024-01-09

这个问题今天出现在 manipulatr 邮件列表中。

http://groups.google.com/group/manipulatr/browse_thread/thread/fbab76945f7cba3f

我正在改写。

给定一个距离矩阵(计算为dist)将函数应用于距离矩阵的行。

Code:

library(plyr)
N <- 100
a <- data.frame(b=1:N,c=runif(N))
d <- dist(a,diag=T,upper=T)
sumd <- adply(as.matrix(d),1,sum)

问题是,要按行应用该函数,您必须存储整个矩阵(而不仅仅是下三角部分)。因此,对于大型矩阵,它使用了太多内存。在我的计算机中,对于维度约为 10000 的矩阵,它会失败。

有任何想法吗?


首先,强烈推荐给还没看过的人在 r-wiki 上阅读这篇文章 https://web.archive.org/web/20140428021502/http://rwiki.sciviews.org/doku.php?id=tips:programming:code_optim2关于代码优化。

这是另一个没有使用的版本ifelse(这是一个相对较慢的函数):

noeq.2 <- function(i, j, N) {
    i <- i-1
    j <- j-1
    x <- i*(N-1) - (i-1)*((i-1) + 1)/2 + j - i
    x2 <- j*(N-1) - (j-1)*((j-1) + 1)/2 + i - j
    idx <- i < j
    x[!idx] <- x2[!idx]
    x[i==j] <- 0
    x
}

我的笔记本电脑上的计时:

> N <- 1000
> system.time(sapply(1:N, function(i) sapply(1:N, function(j) noeq(i, j, N))))
   user  system elapsed 
  51.31    0.10   52.06 
> system.time(sapply(1:N, function(j) noeq.1(1:N, j, N)))
   user  system elapsed 
   2.47    0.02    2.67 
> system.time(sapply(1:N, function(j) noeq.2(1:N, j, N)))
   user  system elapsed 
   0.88    0.01    1.12 

并且 lapply 比 sapply 更快:

> system.time(do.call("rbind",lapply(1:N, function(j) noeq.2(1:N, j, N))))
   user  system elapsed 
   0.67    0.00    0.67 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将函数应用于 R 中的距离矩阵 的相关文章

  • 在 Shiny 中显示反应式 htmlTable 表格

    我正在制作我的第一个 Shiny 应用程序 但找不到任何有关如何显示使用 htmlTable 包创建的表格的示例 我基本上想在按下按钮时创建一个表格并显示它 Shiny 显示 html 代码而不是表格 我不知道用什么替换服务器部分中的 re
  • O(1) 算法确定节点是否是多路树中另一个节点的后代?

    想象一下下面的树 A B C D E F 我正在寻找一种方法来查询 F 是否是 A 的后代 注意 F 不需要是directA 的后代 在这种特殊情况下这是正确的 只需要针对更大的潜在后代节点池测试有限数量的潜在父节点 当测试一个节点是否是潜
  • 为什么这个 R ggplot2 代码会显示一个空白的显示设备?

    虽然 SO 通常不用于帮助解决错误 但这个显示了特别简单且特别烦人的行为 如果你是一个ggplot2用户 您可以在 10 秒或更短的时间内重现它 正如这个 GitHub 问题 ggplot gtable 创建空白显示 https githu
  • 增加雷达图中长轴标签的空间

    我想创建一个雷达图ggirahExtra ggRadar 问题是我的标签很长并且被剪掉了 我想我可以通过添加在标签和绘图之间创建更多空间margin margin 0 0 2 0 cm to element text in axis tex
  • 如何根据 ggplot2 中的汇总数据创建堆积条形图

    我正在尝试使用 ggplot 2 创建堆积条形图 我的宽格式数据如下所示 每个单元格中的数字是响应的频率 activity yes no dontknow Social events 27 3 3 Academic skills works
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • 当将遗传算法与 lme4 一起使用时,glmulti 无限期运行

    我在 R 中使用 glmulti 进行模型平均 我的模型中有大约 10 个变量 使得详尽的筛选不切实际 因此我需要使用遗传算法 GA 调用 method g 我需要包含随机效应 因此我使用 glmulti 作为 lme4 的包装器 此处提供
  • ggplot:如何限制条形图中的输出,以便仅显示最频繁出现的情况?

    我几个小时以来一直在寻找这个简单的东西 但没有结果 我有一个数据框 其中一列为变量 国家 地区 我想要两件事以下 绘制最常见的国家 地区 最常见的位于顶部 找到部分解决方案EDIT找到完整的解决方案 gt gt 重点问题是根据频率限制条形图
  • 如何计算排列? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个关于 Java 排列的问题 Suppose I have five different elements in an arra
  • 如何动态地将 sliderInput 添加到闪亮的应用程序中?

    使用闪亮 我上传一个 csv 文件 并根据列名称 我需要向 ui 添加滑块 sidebarPanel fileInput file1 Upload CSV File to Create a Model accept c text csv t
  • R:单纯形错误:在下标赋值中不允许使用 NA

    对于以下具有目标函数和约束的最小化 boot simplex返回错误 Error in tab pr lt tab pr tab pr pc pv o tab pr NAs are not allowed in subscripted as
  • rvest 函数 html_nodes 返回 {xml_nodeset (0)}

    我正在尝试抓取以下网站的数据框 http stats nba com game 0041700404 playbyplay http stats nba com game 0041700404 playbyplay 我想创建一个表格 其中包
  • 在 Google Colab 上的 R 笔记本中安装 python 库

    我正在尝试在 Google Colab 上的 R 笔记本中安装 python 库 为此我使用 reticulate 包 library reticulate py install pandas 但我得到的结果是这个错误 Error coul
  • 自定义轴缩放后 ggplot2 缺少标签

    我正在尝试使用我的 x 轴应用自定义缩放ggplot2 and scales trans new 但是 当我这样做时 一些轴标签丢失了 有人可以帮我弄清楚为什么吗 Setup library tidyverse the data ds lt
  • 无法编译包“maps”

    当我安装 maps 包时 安装中出现警告 ld warning ignoring file Library Developer CommandLineTools SDKs MacOSX10 14 sdk usr lib libSystem
  • 我如何查看 quantmod 包中所有可用的数据系列?

    如何显示可用的所有报价 数据系列的列表 例如使用雅虎的 getSymbols 我不知道有什么办法 TTR包有一个功能 stockSymbols 下载 NYSE AMEX 和 NASDAQ 的所有当前代码 它试图将它们采用雅虎可接受的格式 但
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d

随机推荐

  • 数据库或 Web 应用程序中的分页选择

    我正在考虑重新设计我们网站的报告页面以使其更快 但我对应该如何实现分页持观望态度 我们的数据库很大 超过 1 5 亿条记录 我们的大多数报告需要来自最多 5 到 10 个表的复杂数据 因此每个表可能有 5 或 6 个联接和一些内部选择 显然
  • 如何在从 Linux 移植的 C++ 项目中使用 OpenGL

    我只是尝试在我的 Mac 上编译一个开源 C 应用程序 我收到错误 GL gl h 文件未找到 我知道这意味着它找不到需要编译和运行的 open GL 库 我对下一步该做什么感到困惑 因为 看起来 OS X 内置了对 open gl 的支持
  • AspNetCore中间件UserManager依赖注入

    我有一个多层应用程序 是我开始在 ASP NET Core 1 1 中编写的 我仍在不断学习 我像以前在 Web API 中所做的应用程序一样组织它 我有主机服务 网络核心应用程序 业务层和数据库之上的数据层 业务层和数据层是 net co
  • JQuery/Javascript 重新排序行

    我有一个 aspx 页面 看起来像这样 tr td Some label td td Some complex control td tr tr td Some label td td Some complex control td tr
  • 同一类上的两个类别具有相同的方法名称

    我注意到 UIImageView 上的 AFNetworking 和 SDWebImage 类别具有相同的方法名称 AF网络 void setImageWithURL NSURL url self setImageWithURL url p
  • Django 站点地图和“普通”视图

    也许我不明白站点地图的目的 或者也许我不明白如何使用站点地图 现在 我的站点地图包括所有 动态 创建的页面 例如博客文章 但是如何添加 静态 页面 例如我的索引和联系页面 或者这些视图不应该出现在站点地图中吗 我认为所有页面都应该在站点地图
  • 将文件解压到内存的最佳 Api

    我正在开发一个 Qt 应用程序 我们必须读取压缩文件或 QByteArrays 并将它们解压缩到内存中 读取文件内容而不实际将文件解压缩到磁盘 有没有好的sdk可以轻松实现这一点 我们目前使用 QArchive 无错误 但我们发现它根本不是
  • 通过命令行运行时如何连接到数据库

    当我从浏览器运行 zend 框架项目时 一切正常 它连接到数据库 当我从命令行运行项目时 它无法连接到数据库并引发错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE HY000 2002 没有这样的文件或目录
  • 测试中的 NestJS 全局模块

    有没有办法自动提供所有 Global模块成TestModule 即无需导入它们 与主应用程序的工作方式相同 到目前为止 我必须确保将任何全局模块插入到import我的通话清单 await Test createTestingModule i
  • 尝试使用 linq 转换数据[重复]

    这个问题在这里已经有答案了 我有以下类结构 public class TaskLog public DateTime LogDate get set public string Robot get set public string Tas
  • 联合内位域的对齐

    我对以下代码如何在内存中布局感到有点困惑 struct Thing union unsigned value 24 uint8 t bytes 3 Thing int v value v void foo printf Thing p va
  • WAMP 中不考虑更改 my.ini 文件上的 datadir

    我通常不会问这个问题 但我却用这个问题来撞墙 我正在尝试设置 WAMP 以与 Dropbox 配合使用 我已经使用过这两个教程 http mymediamagnet com how to setup wamp with dropbox ht
  • 云数据融合预览环境

    我们可以配置计算配置文件以在我创建的自定义集群上运行管道 但是对于预览 我无法指定计算配置文件 我需要使用一些自定义转换 这需要我在 data proc 集群上安装一些外部 jar 才能使代码正常工作 我想在使用 预览运行 部署代码之前对其
  • 使用驼峰路由提供静态文件

    我正在尝试在骆驼路线中提供静态文件 我的主类中的路由包含这段代码 public final void configure throws Exception declaring camel routes match on uri prefix
  • AJAX 提交之前的 jQuery 验证

    我有一个简单的注册表单 其中包含以下 jQuery 验证代码 document ready function registerForm validate rules Username required true minlength 6 Pa
  • Ember.js:查看监听按键事件

    在我的应用程序中 我有一个包含一些设置信息的面板 该面板通过单击按钮打开 关闭 但我也希望能够通过点击关闭它esc在键盘上 我的视图的代码如下所示 Social MainPanelView Ember View extend element
  • Android:保存试用申请信息

    我想保存一些有关试用版应用程序的信息 我希望此信息持久存在 以便检测用户是否删除了该应用程序并在试用期满后再次安装 存储此类信息的最佳位置是什么 thanks 大多数时候 这个问题的解决方案是进行服务器端检查 但如果您不想使用服务器 最好在
  • SQL - 删除电话号码中的括号

    我正在尝试从号码的区号中删除括号 我可以这样做 但是当我尝试连接两个 Replace 函数时 数字会重复 仅删除一个括号 这是我到目前为止所尝试的 SELECT HomePhone REPLACE HomePhone REPLACE Hom
  • Windows 和 Mono 上的 SQLite?

    读完问题后如何有条件地为 Mono 和 Microsoft NET 编译 C https stackoverflow com questions 329043 how can i conditionally compile my c sha
  • 将函数应用于 R 中的距离矩阵

    这个问题今天出现在 manipulatr 邮件列表中 http groups google com group manipulatr browse thread thread fbab76945f7cba3f 我正在改写 给定一个距离矩阵