在循环中收集未知数量的结果

2023-11-24

如果事先不知道最终结果的数量,那么在 R 循环中收集结果的惯用方法是什么?这是一个玩具示例:

results = vector('integer')
i=1L
while (i < bigBigBIGNumber)  {
    if (someCondition(i)) results = c(results, i)
    i = i+1
}
results

这个例子的问题是(我假设)它将具有二次复杂度,因为向量需要在每次追加时重新分配。 (这是正确的吗?)我正在寻找避免这种情况的解决方案。

I found Filter,但需要预先生成1:bigBigBIGNumber我想避免这种情况以节省内存。 (问题:for (i in 1:N)还预先生成1:N并保存在记忆中?)

我可以做一些类似的东西链表像这样:

results = list()
i=1L
while (i < bigBigBIGNumber)  {
    if (someCondition(i)) results = list(results, i)
    i = i+1
}
unlist(results)

(请注意,这不是串联。它正在构建一个类似的结构list(list(list(1),2),3),然后用展平unlist.)

还有比这更好的方法吗?通常使用的惯用方式是什么? (我对 R 很陌生。)我正在寻找有关如何解决此类问题的建议。非常欢迎关于紧凑(易于编写)和快速代码的建议! (但我想关注快速和内存效率。)


这是一个算法,当输出列表填满时,它的大小会加倍,从而实现一定程度的线性计算时间,如基准测试所示:

test <- function(bigBigBIGNumber = 1000) {

  n <- 10L
  results <- vector("list", n)
  m <- 0L
  i <- 1L
  while (i < bigBigBIGNumber)  {
    if (runif(1) > 0.5) {
      m <- m + 1L
      results[[m]] <- i
      if (m == n) {
        results <- c(results, vector("list", n))
        n <- n * 2L
      }
    }
    i = i + 1L
  }
  unlist(results)
}

system.time(test(1000))
#    user  system elapsed 
#   0.008   0.000   0.008 
system.time(test(10000))
#    user  system elapsed 
#   0.090   0.002   0.093 
system.time(test(100000))
#    user  system elapsed 
#   0.885   0.051   0.936 
system.time(test(1000000))
#    user  system elapsed 
#   9.428   0.339   9.776 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在循环中收集未知数量的结果 的相关文章

  • R中有字典功能吗

    有没有办法在 R 中创建一个 字典 使其具有对 一些效果 x dictionary c Hi Why water c 1 5 4 x Why 5 我问这个是因为我实际上正在寻找两个分类变量函数 所以如果 x dictionary c a b
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 创建序列组合

    我正在尝试解决以下问题 考虑 5 个简单序列 0 100 100 0 rep 0 101 rep 50 101 rep 100 101 我需要 3 个数字变量的集合 它们的所有组合都具有上述序列 由于有 5 个序列和 3 个变量 因此可以有
  • 在 R Shiny 中显示/隐藏整个框元素

    我目前正在尝试找到一种方法来隐藏 显示 R Shiny 中的整个 box 元素 以及里面的所有内容 我想创建一个可能的按钮 它允许用户展开特定框 然后使用相同 甚至不同 的按钮隐藏它 我不想使用条件面板 因为我的应用程序非常大并且会产生一些
  • 如何制作一连串的ggplots并在它们之间绘制箭头?

    对于一个项目 我需要绘制一些图并在它们之间放置箭头作为序列的指示 我想知道我是否可以用 ggplot 来做到这一点 是否可以使用 ggplot2 绘制一个干净的大箭头并将其添加到最终的多重图中 作为示例 我使用此代码来绘制绘图 librar
  • R:如何更改ggvis闪亮应用程序中特定范围的绘图背景颜色

    I have a simple shiny app like below and you can run it The plots are created by ggvis and user can choose student name
  • 使用 dplyr 的 select 引用变量名[重复]

    这个问题在这里已经有答案了 通常我会想要选择变量的子集 其中该子集是函数的结果 在这个简单的例子中 我首先获取与宽度特征相关的所有变量名称 library dplyr library magrittr data iris width var
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • 如何处理包内部的 R 数据?

    我正在开发的 R 包需要多个 R 数据对象 例如预先计算的模型和参数 目前 我将包的 数据 目录中的每个对象放在单独的 RData 文件中 使用该包时 用户可以使用 数据 功能将这些对象附加到他们的环境中 我想要的行为是 在加载包时 数据对
  • 一次评论多个对象

    假设您有一个变量 a 到 j 的列表 for x in 1 10 assign letters x x 您将如何评论那些最近创建的对象 我尝试过类似的事情 for x in 1 10 comment get letters x lt pas
  • DT数据表中的列对齐

    In my shiny我正在使用的应用程序datatable函数来自DT库构建一个表格并希望将列居中对齐 我可以用formatStyle column textAlign center 但它只影响列体而不影响标题 我们必须设置columnD
  • R - 如何为数据范围内的缺失值绘制条形图零点?

    假设我对 1 到 10 之间的整数的 200 个点有 10 个观察值 mysample sample rep seq 1 10 20 10 我想用条形图绘制它 barplot table mysample barplot https i s
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name
  • 闪亮的点击/画笔不适用于非笛卡尔坐标?

    我正在开发一个闪亮的应用程序 它应该让用户在由 ggplot2 生成的世界地图上选择地理数据点 如这个例子 http shiny rstudio com gallery plot interaction selecting points h
  • 循环 2 个列表,重复最短的列表,直到最长的列表结束 [重复]

    这个问题在这里已经有答案了 我确信有一种简单而明显的方法可以做到这一点 但我一直在谷歌搜索和阅读文档 但我找不到任何东西 这就是我想要实现的目标 la a1 a2 a3 a4 lb b1 b2 result a1 b1 a2 b2 a3 b
  • 如何更新 R 中的包?

    我想将一个 R 包升级到已经可用的新版本 我试过 update packages c R2jags 但它什么也没做 控制台上没有输出 没有错误 什么也没有 我使用了相同的语法install packages但也许我做错了什么 我一直在看 u
  • 根据特定行中的值对列重新排序。

    我在数据框中有以下数据 aa bb cc 1 3 4 5 2 5 4 3 3 7 8 6 100 33 63 55 我需要根据最后一行中的值对列重新排序 这种转变的结果将是 bb cc aa 1 4 5 3 2 4 3 5 3 8 6 7
  • 如何在 R 中为所有plot.default、plot 或lines 调用设置默认颜色

    为了简化我的日常 R 交互 我想为所有绘图设置默认颜色 例如 假设我想要用红线绘制所有绘图 例如在 gnuplot 中 到目前为止 这是我的 Rprofile 的片段 setHook packageEvent grDevices onLoa
  • 将 12 小时字符时间转换为 24 小时

    我有一个包含字符格式时间的数据集 我试图将其从 12 小时格式转换为 24 小时格式 我做了一些搜索 但我发现的所有内容似乎都假设字符已经采用 24 小时格式 这是我工作时的一个例子 times lt c 9 06 AM 4 42 PM 3
  • 安装 gplots 时出错

    我正在 OSX v 10 9 2 上运行 R v 3 0 3 当尝试使用以下命令在 R studio 中安装 gplots 包时 出现错误 gt library gplots Error in library gplots there is

随机推荐

  • 在大括号和管道中对命令进行分组不会保留变量

    说我有一个文件myfile在我当前的工作目录中 如果命令正常执行 我想设置一个变量 但也使用它的结果 ls myfile v 3 myfile echo v 3 但现在我也想通过管道传输结果 所以我使用 list 对命令进行分组的语法 un
  • 响应式设计:不同屏幕尺寸显示不同图像

    我们的客户希望在小屏幕上与大屏幕上有不同的横幅图像 不仅仅是收缩 拉伸以适应 而且实际上替换了不同的图像 全尺寸图像相当复杂 几个人 两个徽标和一些装饰文本 因此对于较小的图像 他们想要裁剪掉一些人 删除徽标等 所以他们想要最大的 最复杂的
  • 为什么带有两个常量的三元运算符比带有变量的三元运算符更快?

    在Java中 我有两个不同的语句 通过使用三元运算符来实现相同的结果 如下所示 num lt 0 0 num num num lt 0 0 1 看来第二条语句不必要地复杂 并且比第一条语句花费的时间更长 但是当我使用以下代码记录每个语句所花
  • Pandas 分割并选择第二个元素

    我有一个像这样的数据框 item id 26 23 24 65 12 24 54 24 66 23 当我说 df item id df item id map lambda x x split 0 I get item id 26 24 1
  • 在活动之间导航时重置运动布局

    我在我的主要活动中使用运动布局 它工作正常 但是 当我移至其他活动并导航回主活动时 有时活动会重置并且布局处于起始状态 如何防止这种情况发生 除此之外 我还有另一个关于运动布局的问题here 我所做的是添加一个字段 具体来说是一个布尔字段
  • 设置十六进制和十进制颜色的行为不同

    我试图通过以下方式设置橙色 WorkSheet Range A1 A5 Interior color 49407 and WorkSheet Range A1 A5 Interior color HC0FF Hex value of 494
  • 如何将 SelectManyCheckbox 与两个 ArrayList 一起使用? - Primefaces

    我正在尝试实现一个
  • PyMC 3 中的生存分析

    我尝试移植简单的生存模型从这里 介绍中的第一个 从 PyMC 2 到 PyMC 3 但是 我没有找到任何与 观察到的 装饰器等效的东西 并且我尝试编写新发行版失败了 有人可以提供一个例子 这是如何在 PyMC 3 中完成的吗 这是一个棘手的
  • 从 NSFetchedResultsController 设置 UITableView 标头

    我有一个NSFetchedResultsController这是从 a 中获取对象NSManagedObjectContext 我正在使用结果来填充 UITableView 我正在用这两个排序描述符进行过滤 NSSortDescriptor
  • 子类 string.Formatter

    在此发表评论 如何定义新的字符串格式化程序 我尝试子类化string Formatter 这是我所做的 不幸的是我似乎在这个过程中打破了它 import string from math import floor log10 class C
  • 编写用户脚本时,立即调用函数表达式 (IIFE) 模式真的有必要吗?

    我的问题非常类似于javascript中自执行函数的目的是什么 但是它涉及用户脚本 特别是 GreaseMonkey 我发现有些用户脚本是按照这种模式分发的 有些则不是 具有 IIFE 模式的脚本示例 source UserScript U
  • 文件正在被另一个进程使用

    我有一个程序大致可以做到这一点 打开一个文件并从中读取 关闭文件 启动文件观察程序来观察文件中的更改 一旦检测到更改 文件观察器的 EnableRaisingEvents 标志就会设置为 false 并且该过程从步骤 1 开始重复 问题是
  • Python打印unicode列表

    用下面的代码 lst u u5de5 u u5de5 msg repr lst decode unicode escape print msg I got u 工 u 工 如何删除前导u使得内容msg is 工 工 gt gt gt imp
  • 如何在 Cocoa / Objective-C 中将文件编码和解码为 Base64

    我目前正在尝试让一个小型肥皂客户端工作 其中包括在请求的 xml 中发送证书文件 我可以轻松地将文件放入 NSData 对象中 但随后我必须将其转换为某个 Base64 字符串 环境是Mac OSX Xcode 4 3 我发现很多较旧的帖子
  • 如何访问 Nuxt 插件中的 .env 变量?

    细分分析提供了一个包含秘密 API 密钥的代码片段 在我的Nuxt js项目我创建了一个名为的插件segment js我在我的nuxt config js nuxt config js plugins src plugins segment
  • Flutter中的shrinkWrap属性有什么作用?

    我是 Flutter 的新手 非常渴望学习这项技术 我无法理解的工作shrinkWrap财产在ListView 我无法理解颤振文档 通常是一个ListView 也GridView PageView and CustomScrollView
  • Java如何利用多核?

    JVM 在单个进程中运行 JVM 中的线程共享属于该进程的堆 那么JVM如何利用多核提供多OS线程来实现高并发呢 您可以通过多个线程来利用多个核心 但是使用比机器中存在的核心数量更多的线程可能只是浪费资源 您可以使用可用处理器 获取核心数量
  • Cython 的 language_level 3 和 3str 有什么区别?

    在即将推出的 Cython 3 0 版本中 3strlanguage level 它是随着赛通0 29 成为新的默认值而不是当前的默认值2 即如果未设置 language level 如何设置 我们收到以下警告 FutureWarning
  • ImageMagick 将色彩空间缩减为灰色

    我使用以下命令将 RGB 和 CMYK TIFF 图像转换为 RGB JPEG convert a tif colorspace rgb a jpg 如果 TIFF 图像仅包含灰色像素 则生成的 JPEG 颜色空间为灰色 而不是 RGB 如
  • 在循环中收集未知数量的结果

    如果事先不知道最终结果的数量 那么在 R 循环中收集结果的惯用方法是什么 这是一个玩具示例 results vector integer i 1L while i lt bigBigBIGNumber if someCondition i