返回基于布尔值的数字序列的更优雅的方法?

2023-11-23

这是我作为 data.frame 一部分的布尔值示例:

atest <- c(FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE)

我想返回一个数字序列,从每个 FALSE 开始,递增 1,直到下一个 FALSE。

得到的所需向量是:

[1]  1  2  3  4  5  6  7  8  9 10  1  2  3  4  5  6  7  8  9 10  1

这是完成此任务的代码,但我确信在 R 中可以有一种更简单或更优雅的方法来完成此任务。我一直在尝试学习如何在 R 中更有效地编写代码,而不是简单地完成工作。

result <- c()
x <- 1
for(i in 1:length(atest)){
    if(atest[i] == FALSE){
        result[i] <- 1
        x <- 1
    } 
    if(atest[i] != FALSE){
        x <- x+1
         result[i] <- x
    }
}

这是一种方法,使用方便的(但不广为人知/使用的)基本函数:

> sequence(tabulate(cumsum(!atest)))
 [1]  1  2  3  4  5  6  7  8  9 10  1  2  3  4  5  6  7  8  9 10  1

分解它:

> # return/repeat integer for each FALSE
> cumsum(!atest)
 [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3
> # count the number of occurrences of each integer
> tabulate(cumsum(!atest))
[1] 10 10  1
> # create concatenated seq_len for each integer
> sequence(tabulate(cumsum(!atest)))
 [1]  1  2  3  4  5  6  7  8  9 10  1  2  3  4  5  6  7  8  9 10  1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回基于布尔值的数字序列的更优雅的方法? 的相关文章

随机推荐

  • 当结果集很大时,即使使用索引,mongodb.countDocuments 也会很慢

    mongodb countDocuments当结果集很大时速度很慢 用户收集测试数据 1000 万个带有状态的文档 active 100k 个带有状态的文档 inactive 场status已编入索引 状态 1 db users count
  • 以水平顺序而不是默认的垂直视图在 Shiny 中的元素中显示单选按钮

    我正在开发一个 Shiny 应用程序 使人们能够浏览一些时间序列数据 我有许多小部件 使人们能够选择变量和分析类型 其间 我有一个谦虚的radioButton允许用户为某些变量选择时间序列的机制 radioButtons radio yea
  • Spring Boot中如何配置CORS和基本授权?

    我正在尝试在已设置基本身份验证的 Spring boot 应用程序中配置 CORS 我搜索过很多地方 包括这个答案 这指向基于过滤器的 CORS 支持在官方文档中 到目前为止还没有运气 我的AJAX请求就是这样完成的 如果是从同一个来源完成
  • 如何将 system() 的输出重定向到文件?

    In this C program include
  • Git 状态获取父文件夹的文件

    我刚刚创建了一个新项目htdocs project当我使用状态来获取该文件夹中的文件时 它会列出其中包含的文件和目录htdocs project但它还列出了所有文件夹和子文件夹htdocs以及 例如 Changes not staged f
  • Android 从 URI 读取文本文件

    我有一个Uri指向一个文本文件intent我正在尝试读取该文件以解析其中的字符串 这是我尝试过的 但失败了FileNotFoundException The toString 方法似乎失去了 java io FileNotFoundExce
  • 缺少终身运营商

    我在 Rust 中有以下代码 我知道我不应该返回对局部变量的引用 在这种情况下我不应该返回 要分割的字符串作为 str参考 确定分割边界后 我返回 s 0 idx where idx是边界的终点 我确信这不会导致 悬空 引用相关错误 然而事
  • Spring Boot Hibernate 没有事务正在进行

    我正在使用 Spring Boot 它完美地使我成为实体管理器 我决定测试从实体管理器获取会话工厂并使用它作为示例 但我遇到了下一个问题 javax persistence TransactionRequiredException no t
  • 在继续之前等待 API 调用在 Javascript 中完成

    我过去和今天都在努力解决的问题是 在您收到回复之前 API AJAX 无法继续 目前我正在使用 Facebook API 我需要从调用中获取响应然后返回它 但发生的情况是我的函数在我从 API 调用中获得响应之前就已返回 我知道为什么会发生
  • Spring boot - 预检响应没有 HTTP 正常状态

    我正在使用 Angular 5 制作网络 每次尝试执行此操作时都会收到此错误GET要求 我在这里阅读了大量的答案 但没有一个对我有用 正如我所读到的 这是因为我正在向此请求添加自定义标头 这是需要完成的 因为我正在使用 Spring Sec
  • xcode 6 beta 4 - MessageComposeResult 无法转换为OptionalNilComparisonType

    我刚刚从 Xcode 6 Beta 3 升级到 Beta 4 在 3 中我的应用程序编译完美 但在 4 中出现以下错误 任何人都可以解释并提供解决方案吗 func messageComposeViewController sendMsg M
  • 如何从 Pandas 数据框列中的日期时间减去 3 小时?

    我有两列日期时间为格林尼治标准时间 我需要从此日期时间减去三个小时 例如 在第 4 行中 我需要在 3 小时内减去 startdate 结果是 08 02 2018 17 20 0 在同一行 4 中 我需要减去 3 小时内的结束日期 结果是
  • C++ 从函数返回指向数组的指针的正确方法

    我对 C 相当陌生 并且一直在避免使用指针 根据我在网上阅读的内容 我无法返回数组 但我可以返回指向它的指针 我编写了一个小代码来测试它 并想知道这是否是正常 正确的方法 include
  • pg nodejs 包导致“json 类型的输入语法无效”

    我的项目有以下设置 使用pg节点 postgres 包 简单的表 tmp 如下所示 根据jsonORG和Postgres 文档物体 foo true 在语法上是有效的 JSON 并且当使用 pgAdmin 查询工具时 UPDATE tmp
  • Android onFling 没有响应

    我首先是 Android 新手 所以首先考虑一下新手犯的错误 我正在尝试在我的代码中添加一个 fling 函数 public class MainGamePanel extends SurfaceView implements Surfac
  • 在自定义组件中找不到 Designintf.dcu

    我在这里将一些自定义的delphi组件转换为最新的delphi xe5 我已经在 delphi xe5 ide 中构建了它 并将 desgninf 替换为 designintf 和设计编辑器 我还在参考中包含了 designide dcp
  • 石墨中的自定义查询

    我们需要收集多个服务器和业务流程上的时间序列信息 并考虑使用石墨 如果我们想显示原始数据似乎很好 但是 如果我们想对这些数据进行 BI 并运行自定义查询怎么办 石墨是否允许这样做 或者我可以指示石墨在 postgress 上存储数据吗 Gr
  • 如何访问 JavaScript 正则表达式中的匹配组?

    我想使用 a 来匹配字符串的一部分正则表达式然后访问带括号的子字符串 var myString something format abc I want abc var arr s format s exec myString console
  • 如何使用 BitmapFactory.decode*() 指定位图格式(例如 RGBA_8888)?

    我正在打几个电话BitmapFactory decodeFile and BitmapFactory decodeResource 我想指定位图解码的格式 例如 RGB 565 或 RGBA 8888 目前 解码的位图格式似乎取决于传入的图
  • 返回基于布尔值的数字序列的更优雅的方法?

    这是我作为 data frame 一部分的布尔值示例 atest lt c FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE