为什么 R 中的循环很慢?

2024-02-25

我知道循环很慢R我应该尝试以矢量化的方式做事。

但为什么?为什么循环很慢并且apply快吗?apply调用几个子函数——这看起来并不快。

Update:抱歉,这个问题问得不好。我将矢量化与apply。我的问题应该是,

“为什么矢量化速度更快?”


循环并不总是很慢并且apply速度很快。在 中对此有一个很好的讨论2008年5月《R新闻》 http://www.r-project.org/doc/Rnews/Rnews_2008-1.pdf:

乌韦·利格斯和约翰·福克斯。 R 帮助台:我怎样才能避免这个循环或 让它更快? R 新闻,8(1):46-50,2008 年 5 月。

在“循环!”部分中(从第 48 页开始),他们说:

许多关于 R 的评论都指出使用循环是一个特别糟糕的主意。这不一定是真的。在某些情况下,很难编写矢量化代码,或者矢量化代码可能会消耗大量内存。

他们进一步建议:

  • 在循环之前将新对象初始化为完整长度,而不是 而不是在循环内增加它们的大小。
  • 不要做某事 可以在循环外完成的循环。
  • 不要简单地避免循环 为了避免循环。

他们有一个简单的例子,其中for循环需要 1.3 秒,但是apply内存不足。

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

为什么 R 中的循环很慢? 的相关文章

  • 使用 R 读取和转换二进制原始数据

    我有一个file https drive google com file d 0BxMpk0nhnJy6SFhxd2xuMzJYYlk edit usp sharing其中包含原始 二进制数据和 ascii 它包含一个时间戳和一个代表速度的
  • R 中的转换会导致文档错误

    每当我运行此代码时 tm map 行都会给我警告消息 警告信息 在 tm map SimpleCorpus docs toSpace 中 转换删除文档 texts lt read csv Data fast food Domino s Do
  • 为什么用scala写的代码比用java写的慢6倍?

    我不确定我在编写 scala 代码时是否犯了一些错误 问题是 The four adjacent digits in the 1000 digit number that have the greatest product are 9 9
  • 使用pivot_longer将R中的多列变成一列[重复]

    这个问题在这里已经有答案了 我有一个dfpopulation看起来像这样 未列出所有列和行 Region X1975 X1976 X1977 X2008 National Total 942420 93717 94974 132802 Be
  • SQL Server 不使用索引将日期时间与非空进行比较

    我有一个与其他任何表都不相关的简单表 它有一个非 PK 列 它是一个日期 我已经为该列创建了一个非聚集索引 如果我提出这个查询 select from table where datecolumn is not null 但如果我删除 no
  • 抑制 R 中的错​​误消息

    我正在 R 中运行模拟研究 有时 我的模拟研究会产生错误消息 当我在函数中实现模拟研究时 当出现此错误消息时模拟停止 我知道抑制错误是不好的做法 但此时对我来说 除了抑制错误然后继续下一个模拟 直到达到我喜欢运行的模拟总数为止 没有其他选择
  • 在ggplotly散点图中添加自定义数据标签

    我想显示Species对于每个数据点 当光标位于该点上方而不是 x 和 y 值时 我用iris数据集 另外 我希望能够单击数据点以使标签持久存在 并且当我在图中选择新位置时标签不会消失 如果可能的话 最基本的是标签 持久性问题是一个优点 这
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • 将天气 iframe 嵌入到 Shiny Dashboard 中

    我正在尝试将 Forecast io 的天气预报嵌入到闪亮的仪表板中 我最初在使用 符号时遇到了麻烦 但看到一篇文章提供了如何使用特殊字符格式化 HTML 代码的示例 但是 当我运行该应用程序时 我看到一个简单的 未找到 即使我知道该链接有
  • 将 read.csv 与符号链接文件一起使用

    我正在尝试做什么 我的源文件非常大 我想避免将其复制到其他文件夹中 我决定创建一个指向大文件的符号链接并想使用read csv读取文件 文件夹结构 项目1 数据 源文件 csv 项目2 数据 别名到源文件 csv 什么地方出了错 读取源文件
  • 使用 data.table 进行分组并选择最短日期

    My Data df1 lt structure list ID c A A A B B C c1 1 6 c2 1 6 myDate c 01 01 2015 02 02 2014 03 01 2014 09 09 2009 10 10
  • R:编写抛硬币的随机采样程序

    假设我们有以下情况 有一枚硬币 如果它正面朝上 那么下一次抛掷正面的概率是 0 6 如果是反面 那么下一次抛掷反面的概率也是 0 6 一个班有100名学生 每个学生随机抛掷硬币几次 Student n 的最后一次抛硬币不会影响 Studen
  • 使用滑动窗口动画 ggplot 时间序列图

    我正在寻找在不失去分辨率的情况下对长时间序列图进行动画处理的方法 我希望视图能够 平移 数据 显示从开始到结束的滑动子集 假设我有以下内容 library ggplot2 library dplyr library gganimate df
  • 如何在 R 中只为直方图的一个标签着色?

    我有一个像这样的数据框 CellLines ZEB1 600MPE 2 8186 AU565 2 783 BT20 2 7817 BT474 2 6433 BT483 2 4994 BT549 3 035 CAMA1 2 718 DU447
  • R:根据元素长度从向量中删除元素

    如何根据字符串的字符数或长度从字符串向量中删除元素 df lt c asdf fweafewwf af aewfawefwef awefWEfawefawef gt df 1 asdf fweafewwf af aewfawefwef aw
  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • 回归时如何设置系数值;右

    我正在寻找一种指定预测变量值的方法 当我使用当前数据运行 glm 时 其中一个变量的系数接近 1 我想将其设置为 0 8 我知道这会给我一个较低的 R 2 值 但我先验地知道模型的预测能力会更大 glm 的权重组件看起来很有希望 但我还没有
  • 如何将带有观察计数的标签添加到 stat_summary ggplot?

    我有一个数据集 例如 outcome lt c rnorm 500 45 10 rnorm 250 40 12 rnorm 150 38 7 rnorm 1000 35 10 rnorm 100 30 7 group lt c rep A
  • R闪亮主面板显示样式和字体

    我正在学习闪亮的应用程序 并且有一些关于调整布局的基本问题 特别是样式和字体 希望得到指点或明确的答案 谢谢 考虑一个基本的输入输出应用程序 用户在 sidebarPanel 中输入数据 然后在 mainPanel 中反应性地输出结果 如何
  • 如何有效地将多个光栅 (.tif) 文件导入 R

    我是 R 新手 尤其是在空间数据方面 我正在尝试找到一种方法来有效地将多个 600 单波段栅格 tif 文件导入到 R 中 所有文件都存储在同一文件夹中 不确定这是否重要 但请注意 在我的 Mac 和 Windows 并行 VM 上的文件夹

随机推荐

  • 在 Python 中的 POST 请求中传递“+”字符

    我正在尝试在 Python 脚本中进行一些自动化操作 但遇到了问题 我正在尝试向服务器发送 POST 消息 url http www example com params arg0 value arg1 value f urllib url
  • 如何撰写和提出 RFC?

    我发现 IMAPv4 有一个缺点 因为它强制用户下载整个正文 文本 HTML 附件 如何编写并提出 RFC 来解决该问题 如果您之前有撰写技术文档 提案 尤其是 RFC 的经验 请分享 实际上有一个 RFC RFC 7322 RFC 风格指
  • 如何禁用字符代码 178 (0xB2) (²) 、 179 (0xB3) (3) 和 185 (0xB9) (1) 作为数字?

    使用 SWI Prolog 生成数字时 code type X digit 结果是预期的ASCII http www asciitable com 字符代码和 178 0xB2 179 0xB3 185 0xB9 e g code type
  • 用随机数替换 pandas 数据框中的唯一值

    我有一个 pandas 数据框 我想用随机正态数替换一些唯一值 在下面的示例中 要替换的值为 0 import numpy as np import pandas as pd dates pd date range 20160101 per
  • KVO 不起作用:消息已收到但未处理

    我在使用 KVO 时遇到以下错误 它只适用于 UIViewController 的子类吗 Terminating app due to uncaught exception NSInternalInconsistencyException
  • 如何从 Bash 生成 Pusher 身份验证字符串?

    我无法生成要使用的 正确 身份验证字符串 通过curl向Pusher发送消息 这是我的脚本 当然 秘密部分被删掉了 bin bash key my key secret my secret appID my app id timestamp
  • 如何使用 jasmine 测试具有 setTimeout 的函数?

    我需要为具有以下功能的函数编写测试setTimeout 打电话进去 但我找不到我应该怎么做 这是函数 Disables all submit buttons after a submit button is pressed var bloc
  • Jenkins 重新运行设置向导

    刚刚在 Windows 服务器上安装了最新的 Jenkins 将其更改为作为服务运行 但我的登录不再有效 没问题 暂时禁用安全性 但发现我所有的插件都不见了 如何让它重新运行设置向导 正如所见第310期 https github com j
  • 如何处理 Firebase 通知,即 Android 中的通知消息和数据消息

    当用户处于前台和后台时 使用 Xamarin Android 在 firebase 中处理通知消息和数据消息的最佳方法是什么 另外 如何获取通知数据 例如特定通知的文本 PS 我访问过以下线程 但没有一个真正有帮助 当设备屏幕关闭时如何处理
  • 是否可以使用触控板进行手势操作?

    在 Chrome 中的 Macbook Pro 上 在屏幕上滑动两根手指可以前后移动 我该如何禁用此功能 并在 jQuery 或 Javascript 中创建自定义手势 我真正需要知道的是当两个手指放在触控板上时如何检测 我认为这是最好的方
  • Vue js点击获取html5属性

    我正在做一个使用 vuejs 最新版本的项目 在这个项目中 我想在点击事件上获取与 vue 关联的 html5 属性 我的按钮代码是 a href class btn btn info btn xs i class fa fa pencil
  • 将 div 滚动到另一个 div 上

    我有两个高度为 100 的 div 当你滚动时 我希望第二个 div 覆盖其他滚动 而不是向上滚动第一个 div 就像在这个网站上一样 http www endzeit ausstellung de http www endzeit aus
  • docker-compose 中的 Windows 10 绑定安装不起作用

    我正在使用 docker compose 来管理多容器应用程序 其中 1 个容器需要访问主机上目录的内容 根据 docker 和 docker compose 上的各种文档来源 这似乎很简单 但我正在努力让它工作 event process
  • 在 LINQ to SQL 中执行 InsertOnSubmit 时出现 NullReferenceException

    在我的数据库中 我有一个名为 工作人员 当我通过 linq to sql 将其带入我的 net 项目时 会创建一个实体类 StaffMember 现在 我还在我的项目中创建了一个部分类 StaffMember 以添加我在其他顶层使用的额外属
  • 列表等数据结构类型的 Sphinx 文档字符串标准是什么?

    Sphinx 是否有支持的标准来记录不是简单的单个对象的参数或返回值类型 例如 在下面的例子中 arg1 是一个 str arg2 是一个 str 列表 arg3 是一个 str 或 int 如何在 Sphinx 中指定集合或复合类型 或者
  • 绘图中两个 y 轴的一条零线

    该图是使用以下代码生成的 library tidyverse library plotly df lt data frame DEP c ABC DEF GHI VALUE c 100 110 120 LINE c 0 1 0 7 0 9
  • 显示多种形式

    在我的代码中 我有一个主窗体 名为 frmMain 和一个关于框 名为 AboutBox1 我想要发生的是 当用户单击菜单条中的 帮助 菜单 然后单击 关于 时 我希望显示 AboutBox1 表单 我已经研究了如何做到这一点 但是当我尝试
  • PhpStorm 和扩展的 php 定义

    使用代码提示 PHPStorm 可以快速显示函数定义 可以配置它来向我展示该函数使用的更详细示例吗 You can place the cursor text cursor not mouse cursor on any PHP funct
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 我的嵌套循环有问题 我有多个帖子 每个帖子都有多个图像 我想从所有帖子中获取总共 5 张图片 所以我使用嵌套循环来获取图像 并希望在数量达到 5 时中断循环 以下代码将返回图像 但似乎不会中断循环 foreach
  • 为什么 R 中的循环很慢?

    我知道循环很慢R我应该尝试以矢量化的方式做事 但为什么 为什么循环很慢并且apply快吗 apply调用几个子函数 这看起来并不快 Update 抱歉 这个问题问得不好 我将矢量化与apply 我的问题应该是 为什么矢量化速度更快 循环并不