加速 R 中 sapply 调用中使用的函数

2023-11-21

我有两个向量e and g。我想知道中的每个元素e中元素的百分比g那些更小。在 R 中实现这一点的一种方法是:

set.seed(21)
e <- rnorm(1e4)
g <- rnorm(1e4)
mf <- function(p,v) {100*length(which(v<=p))/length(v)}
mf.out <- sapply(X=e, FUN=mf, v=g)

与大e or g,这需要很多时间来运行。我如何更改或调整此代码以使其运行得更快?

注:mf上面的函数基于以下代码messdismo 包中的函数。


这么慢的原因是因为你正在调用你的函数length(e)次。对于小向量来说,这并没有太大的区别,但是 R 函数调用的开销确实开始随着较大的向量而增加。

通常,您需要将其移至编译代码,但幸运的是您可以使用findInterval:

set.seed(21)
e <- rnorm(1e4)
g <- rnorm(1e4)
O <- findInterval(e,sort(g))/length(g)

# Now for some timings:
f <- function(p,v) mean(v<=p)
system.time(o <- sapply(e, f, g))
#   user  system elapsed 
#   0.95    0.03    0.98
system.time(O <- findInterval(e,sort(g))/length(g))
#   user  system elapsed 
#      0       0       0 
identical(o,O)  # may be FALSE
all.equal(o,O)  # should be TRUE

# How fast is this on large vectors?
set.seed(21)
e <- rnorm(1e7)
g <- rnorm(1e7)
system.time(O <- findInterval(e,sort(g))/length(g))
#   user  system elapsed 
#  22.08    0.08   22.31
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加速 R 中 sapply 调用中使用的函数 的相关文章

  • 聚合日期时间以总结在特定条件下花费的时间

    我很困惑我应该如何继续 我下面有一些虚拟数据 Date lt as POSIXct c 2018 03 20 11 52 25 2018 03 22 12 01 44 2018 03 20 12 05 25 2018 03 20 12 10
  • stat_function 从函数生成平线

    我有以下代码 library ggplot2 f lt function x if x gt 2 1 x 0 3 else 0 graph lt ggplot data frame x c 0 10 aes x graph lt graph
  • 将所有分号替换为空格 pt2

    我尝试对 2000 多行关键字的列表运行文本分析 但它们的列出方式如下 战略 管理风格 组织 所以当我使用 tm 删除标点符号时 它就变成了 组织的战略管理风格 我认为这在某种程度上破坏了我常用术语的分析 我尝试过使用 vector lt
  • 根据 row_number() 过滤 data.frame

    更新 自从提出这个问题以来 dplyr 已经更新 现在按照 OP 的要求执行 我正在尝试获取第二行到第七行data frame using dplyr 我正在这样做 require dplyr df lt data frame id 1 1
  • dplyr 中的标准评估:全局环境中的函数出现“无法找到函数”错误

    我试图在 dplyr 中对全局环境中的函数使用标准评估 但出现 无法找到函数 错误 这是一些代码 create data frame df lt data frame x rnorm 10 y rnorm 10 define arbitra
  • R参考类问题

    我正在尝试在 R 中创建一个简单的参考类 这是我的代码 R 初学者 MyClass lt setRefClass MyClass fields list a numeric b numeric methods list initialize
  • 如何从数据框中删除少于 5 个观察值的个体 [重复]

    这个问题在这里已经有答案了 为了澄清这个问题 我将简要描述数据 中的每一行data frame是一个观察值 列代表与该观察值相关的变量 包括 观察到什么个体 观察时间 观察地点等 我想排除 过滤观察值少于 5 个的个体 换句话说 如果 in
  • R Leaflet Legend:colorBin-删除中断之间的小数

    我正在使用 Leaflet 库在 R 中创建交互式 HTML 地图 传说中采用的是colorBin用于创建将数据分为 6 个类别的方法 使用min values and max values 我已经定义了美国社区调查收入数据的特定范围可能落
  • 通过 R 中的数据子集执行计算

    我想对数据框的 PERMNO 列中的每个公司编号进行计算 其摘要可以在此处查看 gt summary companydataRETS PERMNO RET Min 10000 Min 0 971698 1st Qu 32716 1st Qu
  • R data.table 1.9.2 关于 setkey 的问题

    这似乎是 1 8 10 后引入的一个错误 与包含列表的 DT 的 setkey 相关 运行下面两个代码来查看问题 library data table dtl lt list dtl 1 lt data table scenario 1 p
  • R 多元一步预测和准确性

    我想使用 R 来比较两个预测模型的 RMSE 均方根误差 第一个模型使用 1966 年至 2000 年的估计值来预测 2001 年 然后使用 1966 年至 2001 年的估计值来预测 2002 年 依此类推直至 2015 年 第二个模型使
  • 更改 pander 中的默认对齐方式 (pandoc.table)

    我目前正在切换到pander对于我的大部分时间knitr markdown格式化 因为它提供了如此出色的pandoc支持 我不太满意的一件事是默认的居中对齐 营销人员可能会喜欢它 但对于技术报告来说这是一个可怕的事情 使用的最佳选择Hmis
  • 按不规则时间间隔对数据进行分组求和(R语言)

    我正在看这里的 stackoverflow 帖子 R 计算一组内的观察次数 https stackoverflow com questions 65366412 r count number of observations within a
  • 在 igraph 中为社区分配颜色

    我在 igraph 中使用 fastgreedy community 检测算法在 R 中生成社区 代码返回 12 个社区 但是在绘图时很难识别它们 因为它返回的图的颜色数量有限 我怎样才能用十二种不同的颜色绘制这个图表 l2 lt layo
  • 更快的 %in% 运算符

    The 快速匹配 https cran r project org web packages fastmatch index html包实现了更快的版本match对于重复匹配 例如在循环中 set seed 1 library fastma
  • 手动设置scale_fill_distiller()的比例

    我正在尝试制作一系列图表进行比较 举例来说 我想使用iris数据集来制作这样的图 其中我已过滤以仅查看 setosa 物种 library ggplot2 library dplyr iris gt filter Species setos
  • 当有很多列时,使用 readr::read_csv() 导入数据时覆盖列类型

    我正在尝试使用 R 中的 readr read csv 读取 csv 文件 我导入的 csv 文件大约有 150 列 我只包含示例的前几列 我希望将第二列从默认类型 我执行 read csv 时为日期 覆盖为字符或其他日期格式 GIS Jo
  • R - 与 SpatialPolygonsDataFrame 对象相交的 SpatialLinesDataFrame 列表的嵌套循环

    我有一系列需要完成的步骤SpatialLinesDataFrame 此处的 线 基于对象与多特征中各个特征的关系SpatialPolygonsDataFrame 多边形 对象 简而言之 每个线列表元素源自单个面要素内部 并且可能会也可能不会
  • 从 R 中的方差分析 (glm) 中提取残余偏差

    我在 R 中安装了一个 glm 模型并采用了方差分析表 我需要提取 残余偏差 列 但它会产生错误 以下是代码 创建数据 counts lt c 18 17 15 20 10 20 25 13 12 outcome lt gl 3 1 9 t
  • 通过使用 navbarPanel() 并隐藏导航栏构建多页闪亮应用程序用户端(在 ui.R 中)?

    我想构建一个多页闪亮应用程序 我可以在其中控制用户可以看到哪个页面 迪安 阿塔利确实这个演示应用程序中有类似的东西 https github com daattali advanced shiny tree master multiple

随机推荐

  • 如何让SBATCH通过电子邮件发送标准输出?

    我想让slurm系统发送myprogram计算完成后通过电子邮件输出 所以我写了SBATCH如下 bin bash l SBATCH J MyModel SBATCH n 1 Number of cores SBATCH t 1 00 00
  • 如何将自签名证书添加到 Chrome / Mozilla

    首先 如果这个问题太简单或无用 请忽略它 我是 TLS 新手 正在尝试实施 SSL 以在客户端和服务器之间进行安全数据传输 我的后端是 Springboot 前端是 Angular 4 对于 Springboot 我使用了以下内容来使其成为
  • S3 存储桶策略:在公共存储桶中,将子文件夹设为私有

    我有一个桶 里面装满了大部分需要公开的内容 但是 有一个文件夹 也称为 前缀 只能由经过身份验证的 IAM 用户访问 Statement Sid AllowIAMUser Action s3 GetObject Effect Allow R
  • MySQL 中的列名和表名区分大小写吗?

    如果我有一个名为category id and Category Id 它们有什么不同吗 如果我有一个名为category and Category 它们有什么不同吗 在 Unix 上 表名区分大小写 在 Windows 上 则不然 很有趣
  • SQL(ORACLE):ORDER BY 和 LIMIT [重复]

    这个问题在这里已经有答案了 我想按属性对数据库中的所有数据进行排序 并且仅在使用 LIMIT 和 OFFSET 之后进行排序 像这样查询 SELECT select list FROM table expression ORDER BY L
  • 如何将 Leaflet Routing Machine 与 React-Leaflet 3 结合使用?

    在react leaflet 2 8 0中旧的做法是使用MapLayer and withLeaflet 但现在在反应传单中 MapLayer and withLeaflet从版本 3 开始已弃用 我正在尝试掌握核心文档 https rea
  • 如何计算矩阵行列式? n*n 或只是 5*5

    每个人 我需要找到矩阵n n or 5 5 行列式 我有一个从 Pascal 翻译而来的函数 但是有INDEX OUT OF RANGE EXCEPTION 有人可以帮助我吗 这是我的代码 public static double DET
  • 函数调用内的 Malloc 似乎在返回时被释放?

    我想我已经把它归结为最基本的情况 int main int argc char argv int arr foo arr printf car 3 d n arr 3 free arr return 1 void foo int arr a
  • 有没有更好的方法将格式化输出传递给 OutputDebugString?

    通常 当我需要在 Windows 中进行调试输出时 我使用以下 C 代码段 ifdef DEBUG define DBGPRINT kwszDebugFormatString wprintf s L s d FUNCTIONW LINE w
  • 从 appengine 应用程序将文件上传到 Google 云存储

    我确信这个问题的答案很简单 但对我来说 这被证明是非常令人沮丧的 因为我无法将我找到的任何解决方案放入实际代码中供我自己使用 我正在应用程序引擎上构建一个应用程序 让用户上传文件 然后由应用程序执行操作 文件的大小通常约为几 Mb 在某些情
  • 仅在调试模式下使用 gradle 的一组类和资源

    我只想在调试模式构建类型 Android studio gradle 中添加特定功能 将一组类和资源限制为调试构建类型 gradle 我当前的解决方案是使用debug目录来存储额外的类和资源 并在代码中当BuildType DEBUG属性设
  • Python struct.pack() 行为

    data 5 Result1 struct pack
  • 修改 Chart.js 2 中散点图的 X 轴标签

    在 Chart js 2 中 我生成一个散点图 其中 x 坐标是纪元时间戳 y 坐标是整数 我想知道是否有一种方法可以格式化图表的 x 轴标签 以便日期以人类可读的格式显示 更新 目前我正在根据 Unix 时间戳 以毫秒为单位 构建图表 该
  • 获取产品变体属性值术语 ID 和名称

    在 WooCommerce 中 我正在使用 product gt get variation attributes 获取产品的变体属性 此函数返回一个包含名称但不包含 ID 的数组 像这样 pa color shirt gt Array 0
  • 高效计算向量组合

    出于好奇 我正在研究一个研究问题 但我不知道如何对我想到的逻辑进行编程 让我向你解释一下 我有四个向量 例如 v1 1 1 1 1 v2 2 2 2 2 v3 3 3 3 3 v4 4 4 4 4 现在我想做的是将它们组合起来 即 v12
  • 如何在不同的 OpenCV 版本中使用 `cv2.findContours`?

    我正在尝试将 OpenCV 与 Python 结合使用 以便检测来自 Raspberry Pi 相机的实时视频源中的方块 但是 那cv2 GaussianBlur and cv2 Canny下面代码中的函数导致以下错误 类型错误 numpy
  • 我可以让 KnownNat n 来暗示 KnownNat (n * 3) 等吗?

    我正在处理这种形状的数据类型 使用V from linear type Foo n V n 3 Double gt Double 将其固定在n非常重要 因为我希望能够确保在编译时传递正确数量的元素 这是我的程序的一部分 已经运行良好 独立于
  • 如何使用 superagent 发送文件

    所以大约一个月前我问一个问题关于超级代理和发送文件 但根本没有得到任何回应 我仍然想知道如何做到这一点 因为我喜欢使用超级代理 我可以使用普通的 ajax 发送文件 var fd new FormData fd append file th
  • 如何在 AngularJS e2e 测试中测试拖放功能

    我正在尝试测试我的应用程序 我需要将小部件从一个位置移动到另一个位置 换句话说 我需要在端到端测试中测试拖放功能 我将如何测试这个 我也有同样的问题 对我来说 解决方案是遵循此处 Selenium 问题中的建议 https code goo
  • 加速 R 中 sapply 调用中使用的函数

    我有两个向量e and g 我想知道中的每个元素e中元素的百分比g那些更小 在 R 中实现这一点的一种方法是 set seed 21 e lt rnorm 1e4 g lt rnorm 1e4 mf lt function p v 100