高效找到最后一个 1 序列中的第一个

2023-11-24

我有以下带有 0 和 1 的向量:

test1 <- c(rep(0,20),rep(1,5),rep(0,10),rep(1,15)) 

test1
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
                                                                          ^
test2 <- c(rep(0,8),rep(1,4),rep(0,5),rep(1,5),rep(0,6),rep(1,10),rep(0,2)) 

test2
[1] 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
                                                            ^

我需要找到最后一个 1 序列中第一个 1 的索引(在上面的代码中用 ^ 表示)。我有一个解决方案(如下),但性能不佳,我该如何提高性能?

For test1 and test2, the 预期产出分别是36和29。

这是一个次优解决方案:

temp1 <- cumsum(test1)
which(temp1==max(temp1[duplicated(temp1)&temp1!=max(temp1)]+1))[1]
[1] 36

temp2 <- cumsum(test2)
which(temp2==max(temp2[duplicated(temp2)&temp2!=max(temp2)]+1))[1]
[1] 29

注意:实际向量的长度约为 10k。


The data.table库有一个名为的非导出函数data.table:::uniqlist(list(x))。使用三个冒号:::访问非导出函数。此函数确定 data.frame 的列何时更改值并返回更改的索引。

data.table:::uniqlist(list(test1))
# [1]  1 21 26 36

@Arun 谈论uniqlist这里:https://stackoverflow.com/a/21267854/10276092

然后我用y[length(y)]查找向量中最后一项的方法和基数ifelse()检查最后一个索引是否包含 1,否则倒数第二个索引必须包含 1。

fx <- function(x) {
    y <- data.table:::uniqlist(list(x))
    ifelse(x[y[length(y)]] == 1, y[length(y)], y[length(y) - 1])
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高效找到最后一个 1 序列中的第一个 的相关文章

  • 使用 ggplot 2 使用线条或线段将堆栈条形图与多个组连接起来

    我正在对一些患有某种疾病的患者进行一项研究 并在 3 个不同的时间点使用顺序量表评估功能状态 我想在这些时间点的堆叠条形图中连接多个组 我查看了这些主题 但尚未使用这些建议使其发挥作用 如何将线条放置在堆积条形图的边缘 https stac
  • 如何对 lm() 中的一系列值进行子集化

    lm 的帮助文件没有涉及子集参数的语法 我不知道如何让它找到最适合我的数据集的一部分的线 这个问题是类似的 但我无法使用它解决我的特定问题 子集参数在 lm 函数中如何工作 https stackoverflow com questions
  • R 和系统调用

    我过去曾使用 R 对命令行进行非常基本的调用 例子可以找到here https stackoverflow com questions 3284301 command line in r code 这一次 我希望模仿这段从 Windows
  • ggplot 中的条形图,每组有不同数量的条形图

    我的数据集如下所示 DSET lt data frame cbind c rep V1 3 rep V2 3 V3 c rep c X1 X2 X3 2 X1 c rep 1 7 names DSET lt c A B C DSET 3 l
  • 单击 hPlot 图表中闪亮的数据点时打印组名称

    我有一个闪亮的应用程序 它使用 rCharts 中的 highcharts 库显示一些图表 在某些情况下 我在单个图表上有多个图表 这些图表是使用 hPlot 中的组选项创建的 我希望在单击图表时打印单个数据点的所有参数 x y 和组值 我
  • 使用格式表过滤数据框

    样本数据 修改自formattablegithub 文档 df lt data frame id 1 10 name c Bob Ashley James David Jenny Hans Leo John Emily Lee age c
  • 在 R data.table 中计算时间增量

    我有一个篮球运动员数据的数据表 其中包括每场比赛和多名球员的比赛日期 我想创建一个列来计算自上一场比赛以来的天数 我在 R 中使用 data table 包 PLAYERID GAME DATE 1 2989 2014 01 1 2 298
  • 尝试使用 movie3d 制作 3D PCA 图(rgl)的电影

    我已经使用 pca3d 包在 R 中制作了 rgl 3D PCA 图 并且我正在尝试使用 movie3d 制作一个包含旋转图电影的 gif 文件 pca3d 包 makeMoviePCA 中有一个函数 它将其参数传递给 movie3d 这是
  • 将 Excel 数字日期重新格式化为 R 日期

    希望将从 Excel 中提取的列重新格式化为包含数字 Excel 格式 例如 40182 的数据框 as date 40182 origin 1899 12 30 format b Y Returns 1 2070 年 1 月 5 日 我正
  • 将 SAS sas7bdat 数据读入 R

    R 有哪些选项可以读取本机 SAS 格式的文件 sas7bdat 进入R The NCES 共同核心 https nces ed gov ccd pubschuniv asp例如 包含以此格式保存的大量数据文件存储库 为了具体起见 让我们集
  • 在两个向量之间交换元素(交叉)

    假设我有 chromosome 1 lt c 0010000001010000 chromosome 2 lt c 0100000001001010 我该如何实施step 3 5 Evaluate NC1 否 中 1 个chromosome
  • R:从 Github 安装包时出现编码问题

    我正在尝试安装dcStockR https github com yutannihilation dcStockR来自 Github 的包 这是一个htmlwidgets http www htmlwidgets org 周围的包装纸dc
  • 获取数据集 R 包中所有对象名称的列表?

    如何获取对象中对象的确切名称列表datasets https stat ethz ch R manual R devel library datasets html 00Index html包裹 我在这里找到了很多 data package
  • C++ std::vector 搜索值

    我正在尝试优化std vector 搜索 基于索引的迭代向量并返回与 搜索 条件匹配的元素 struct myObj int id char value std vector
  • 为什么表达式“1”==1 的计算结果为 TRUE? [复制]

    这个问题在这里已经有答案了 1 是字符值 其他1是数字 甚至 当我尝试在下面执行时 它给了我 TRUE as character 0 as numeric 0 谁能帮助我理解 为什么 来自help 如果两个参数是不同类型的原子向量 则其中一
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 为什么在 R 中绘图时,hovertemplate 无法正确显示某些数据点

    mydat2 lt data frame subject c math english chemistry score c 80 50 65 class c A B A count c 50 60 70 library plotly plo
  • 如何在 R 中创建纯 ascii 表作为输出,类似于 MySQL 风格?

    我正在尝试为 R 找到一个输出的函数data frameMySQL 风格的 ascii 表中的对象如下 id var1 var2 1 asdf g 2 asdf h 3 asdf j 有这样的功能吗 至少有两个工具可以做到这一点 csvfi
  • 缩放geom_密度以将geom_bar与y上的百分比相匹配

    因为我对数学感到困惑上次我尝试问这个问题 https stackoverflow com questions 32412805 ggplot2 histogram with density curve that sums to 1 这是另一
  • 当我添加形状时,分组哑铃图变得不稳定

    我有以下数据显示白人与黑人在各个领域的一致性百分比 我想创建一个分组哑铃图 其中国家值和州值彼此相邻 以便于比较 Domain c A B C D E F G A B C D E F G A B C D E F G A B C D E F

随机推荐

  • 分号有什么作用?

    我在网上找到了一个函数来帮助我完成当前的项目 并且它的某些行上有分号 我想知道为什么 是为了破坏功能吗 def containsAny self strings alphabet abcdefghijklmnopqrstuvwxyz0123
  • JQuery/JQuery UI 水平分隔线

    最近 我正在开发一个网站 我想创建一个水平分隔线 能够使用 jquery 调整页面上两个元素的大小 基本上 Content 您还可以查看UI Layout jQuery 插件 这是一个demo
  • 如何在链接的 npm 依赖项(开发中)和已安装的依赖项(暂存/生产中)之间切换?

    我正在开发一个自定义 npm 模块 并且它有一个 GitHub 存储库 我还在开发一个使用自定义模块的项目 当处理较大的项目时 使用它是很好的npm link这样我就可以对模块进行更改并立即在主项目中看到它们 To deploy to st
  • 在flutter中,如何将facebook受众作为中介网络与Admob集成?

    我是广告中介新手 我有一个 flutter 应用程序 并且使用以下 admob flutter 插件集成了 admob 并且它在 Android 和 iOS 上运行良好 https pub dev packages admob flutte
  • 暴雪官方魔兽世界 API 在哪里?

    我想知道是否可以通过 API 访问 魔兽世界 我的要求非常明确 必须是暴雪官方API 必须可以在游戏外访问 暴雪现已发布社区 API 允许您直接从暴雪服务获取信息 例如领域状态 玩家和拍卖数据 https dev battle net io
  • 使用构建参数构建 Docker 映像并将其从 DevOps 推送到 ACR

    我正在 Azure DevOps 管道中构建 Docker 映像 然后我想将其推送到 Azure 容器注册表 注册表已创建 并且我已配置 DevOps 来使用它 还有buildAndPushDocker任务 works 然而 由于 Dock
  • Android - 检索联系人照片并显示

    我正在创建一个简单的应用程序 用于检索每个联系人的姓名和电话号码 并在列表视图中显示 并在行开头的缩略图大小的图像视图中显示联系人的照片 我已成功检索并显示姓名和号码 但在浏览了许多教程和堆栈后未能显示照片 我最终将其恢复为仅显示姓名和号码
  • 如何生成动态 GRF 图像以进行 ZPL ZEBRA 打印

    我有个问题 我正在生成动态 BMP 图像并尝试通过 ZPL 命令将其发送到 ZEBRA 打印机 我需要将 BMP 图像转换为 GRF 图像 我认为 BMP 图像提取的十六进制不正确 打印的图像模糊且不正确 这是我的代码 string bit
  • 在java中计算两个双精度数的余数

    我有以下代码 Double x 17 0 Double y 0 1 double remainder x doubleValue y doubleValue 当我运行这个时 我得到余数 0 09999999999999906 知道为什么吗
  • 在 JavaFX 控制器中获取单击对象的 id 的更好方法

    我正在寻找一种更好的方法来获取该对象的事件处理程序中单击的对象的 id 我已经找到了这个 javafx 将 fx id 传递给控制器 或 fxml onAction 方法中的参数 但这对我不起作用 现在我使用节点类的 getId 函数 如下
  • 如何使用 boost::spirit 匹配 unicode 字符?

    如何使用 utf8 unicode 字符匹配boost spirit 例如 我想识别这个字符串中的所有字符 echo a out 当我尝试这个简单的boost spirit程序将无法正确匹配 unicode 字符 include
  • Spark csv读取速度很慢虽然我增加了节点数

    我在 Google Compute Engine 上创建了两个集群 这些集群读取 100 GB 数据 集群一 1 个主控 15 GB 内存 250 GB 磁盘 10 个节点 7 5 GB 内存 200 GB 磁盘 集群二 1 个主控 15
  • 在 MySQL 中使用/存储加密密钥的最佳方法是什么

    我计划使用 MySQL 及其内置加密功能来加密 解密某些表中的某些列 我担心的是我需要将密钥存储在某个地方 我当然可以将密钥存储在文件中并控制该文件的权限以及访问它的应用程序的权限 但这足够了吗 我还可以创建一个网络服务来获取密钥或其他东西
  • 进程间通信选项

    我需要在一个应用程序内订阅另一个应用程序公开的事件 我注意到许多人认为使用 WCF 命名管道是最佳实践 如果我选择 WCF 命名管道 我就必须使用 IIS 对吗 顺便问一下 我一般有哪些选择 命名管道是在同一台机器上进行 IPC 进程间通信
  • 如何使用泛型参数为任何方法构建表达式调用

    我只是尝试使用 Linq Expression 制作如下相同的表达式 Expression
  • ckfinder 调整图像大小

    使用 ckfinder 选择或上传图像后 用户可以更改宽度和高度 我希望它自动将图像大小调整为用户设置的宽度和高度 那可能吗 我认为 ajax 图像调整器可以解决这个问题 但无法让它工作 有人有自动宽度和高度调整大小插件的经验吗 在我的 c
  • 将大量 csv 文件导入 PostgreSQL 数据库的有效方法

    我看到很多将 CSV 导入 PostgreSQL 数据库的示例 但我需要的是一种将 500 000 个 CSV 导入单个 PostgreSQL 数据库的有效方法 每个 CSV 略多于 500KB 总计约 272GB 数据 CSV 的格式相同
  • 异步加载图像到 UICollectionView?

    我如何将图像加载到UICollectionview异步 下面的方法里面 PSTCollectionViewCell collectionView PSTCollectionView collectionView cellForItemAtI
  • Graphite Graph - 我们更新图表的速度有多快?

    我们正在尝试将 Graphite 用于 近 实时图形网络系统 然而 我们似乎无法使石墨的更新速度超过 1 秒 最终我们希望有 100 毫秒的更新 通过阅读常见问题解答 听起来石墨速度很快 但这要么非常具有误导性 要么我不明白如何加速石墨 耳
  • 高效找到最后一个 1 序列中的第一个

    我有以下带有 0 和 1 的向量 test1 lt c rep 0 20 rep 1 5 rep 0 10 rep 1 15 test1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1