每次向量元素变化时在 R 中分割向量

2024-05-03

每次元素值发生变化时,我都需要分割重复元素组的向量。例如:

test_vector <- c("string1", "string1", "string1", "string2", 
  "string2", "string1", "string1", "string3")

必须成为:

$`1`
[1] "string1" "string1" "string1"

$`2`
[1] "string2" "string2"

$`3`
[1] "string1" "string1"

$`4`
[1] "string3"

如果我尝试split(test_vector, test_vector)我得到错误的输出:

$string1
[1] "string1" "string1" "string1" "string1" "string1"

$string2
[1] "string2" "string2"

$string3
[1] "string3"

我编写了一些实现此目的的代码,但它似乎不必要地长,而且我觉得我错过了一些更简单的东西:

# find indices where splitting will occur:
split_points <- rep(F, length(test_vector))
for (i in 1:length(test_vector)) {
  if (i != 1) {
    if (test_vector[i] != test_vector[i-1]) {
      split_points[i] <- T
    }
  }
}
split_points <- c(1, which(split_points))

# create split vector:
split_code <- rep(1, length(test_vector))
for ( j in 1:length(split_points) ) {

  if (j!=length(split_points)) {
    split_code[
      split_points[j]:(split_points[j+1]-1)
    ] <- j
  } else {
    split_code[
      split_points[j]:length(test_vector)
    ] <- j
  }

}

split_result <- split(test_vector, split_code)
$`1`
[1] "string1" "string1" "string1"

$`2`
[1] "string2" "string2"

$`3`
[1] "string1" "string1"

$`4`
[1] "string3"

如果有人能帮助我找到一个更简单的解决方案,我将不胜感激!


In base R, 我们可以用rle获取向量的游程编码

grp <- with(rle(test_vector), rep(seq_along(values), lengths))

用它来split the vector

split(test_vector, grp)

With data.table, rleid根据相邻元素之间的差异给出 id

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

每次向量元素变化时在 R 中分割向量 的相关文章

  • 如何按用户定义(例如非字母顺序)对数据框进行排序[重复]

    这个问题在这里已经有答案了 给定一个数据框dna gt dna chrom start chr2 39482 chr1 203918 chr1 198282 chrX 7839028 chr17 3874 以下代码重新排序dna by ch
  • 如何纠正 data.frame 上的字符编码

    我有一个像这样的数据框 data names lt data frame DATA c 1 5 rownames data names lt c IV xc1N JOS xc9 LUC xcdA RAM xd3N TO xd1O data
  • 如何在 R 中执行近似(模糊)名称匹配

    我有一个专门用于生物学期刊的大型数据集 该数据集是由不同的人长时间编写的 因此 数据不采用单一格式 例如 在 作者 栏中我可以找到John Smith Smith John Smith J等 但它们是同一个人 我连最简单的动作都做不了 例如
  • 多个动态滤镜更新闪亮

    我希望能够让 UI 输入闪亮 并根据用户之前的选择进行自我更新 因此 在下面的示例中 预期的行为是用户选择cyl vsor carb那么这将 过滤数据集mtcars用于创建绘图 即用户根据过滤条件调整绘图并 更新其他过滤器中的剩余输入选择
  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • 行对名称中具有特定模式的列求和

    我有一个像这样的数据表 DT lt ata table data table ref rep 3L 4L nb 12 15 i1 c 3 1e 05 0 044495 0 82244 0 322291 i2 c 0 000183 0 155
  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • 使用选定因子水平的值向 ggplot-barchart 添加水平线

    在这个情节中 df lt data frame factor as factor c rep A 3 rep B 3 Treatment c rep c A B C 2 values runif 6 0 1 ggplot df aes Tr
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是
  • R:按组,测试一个变量的每个值是否存在于另一个变量中

    我有一个数据框架 结构如下 a lt c 1 1 1 2 2 2 3 3 3 3 4 4 b lt c 1 2 3 1 2 3 1 2 3 4 1 2 c lt c NA NA 2 NA 1 1 NA NA 1 1 NA NA df lt
  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • 如何在Rstudio中快速给几个单词加上引号?

    如何将 MI ID FL 转换为 MI ID FL 而无需键入每个双引号 Hmisc 包有一个函数 Cs 它将评估逗号分隔的文本是否带有引号 Cs MI ID FL becomes MI ID FL
  • 我如何查看 quantmod 包中所有可用的数据系列?

    如何显示可用的所有报价 数据系列的列表 例如使用雅虎的 getSymbols 我不知道有什么办法 TTR包有一个功能 stockSymbols 下载 NYSE AMEX 和 NASDAQ 的所有当前代码 它试图将它们采用雅虎可接受的格式 但
  • 如何将参数从 Excel/VBA 传递到 Rstudio 中的脚本

    我正在尝试使用 Rstudio 从 VBA 打开 R 脚本 同时将参数传递给 R 脚本 然后我可以使用 commandArgs 访问该脚本 该问题与此处描述的问题非常相似 WScript Shell 用于运行路径中包含空格且来自 VBA 的
  • 如何将字符串拆分为字符串数组?

    Actually i am reading an xps file in to my Program My xps file should be like this 我粘贴以下代码 List
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col

随机推荐

  • WSo2 EMM - 应用程序管理数据库错误

    运行 WSo2 EMM 1 1 0 除了一个大问题外 一切都工作正常 从我第一次单击 应用程序管理 选项卡中的应用程序那一刻起 只要服务器正在运行 WSO2EMM DB h2 db 文件就会开始稳定增长 即使完全没有任何更改 最终 它变得如
  • PL/pgSQL 中“$$”的用途是什么

    对于 PL pgSQL 来说是全新的 双美元符号的含义是什么这个功能 http postgres cz wiki PL pgSQL 28en 29 CREATE OR REPLACE FUNCTION check phone number
  • 何时对 xmlns 使用 URN

    对于 hello world 类型的 xml 文档
  • 如何在引导程序中将边框半径应用于?

    我需要一行应该是圆角的 并且行与行之间有间距 到目前为止 我尝试了如下所示的表格 曲线类 任何建议 修改都会有帮助 My CSS table curved border collapse separate table curved bord
  • 如何等待所有请求完成

    我用的是宁AsyncHttpClient从命令行程序 我需要等待所有请求结束 以便我可以安全地拨打电话close 在客户端上 挑战在于我从该计划的许多不同部分提出了许多请求 下面剥离了自己的代码 显示了我从以下位置执行嵌套 HTTP 请求的
  • 如何使PHP库松耦合? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • BasicNetwork.performRequest:意外响应代码 500

    我的 Android Studio 中有这个登录 Java 代码 private void loginUser pd ProgressDialog show LoginActivity this Loading StringRequest
  • 将 jQuery 与托管在 Github 页面上的 Jekyll 站点结合使用

    我有一个简单的 Jekyll 博客托管在 github 页面上 我已经包含了 jQuery 和 tablesorter 插件 但遇到了错误 据我所知 这个错误是由于没有以正确的顺序加载 jQuery 引起的 我的下图显示代码的顺序是正确的
  • 在数据库中存储多维数组:关系数组还是多维数组?

    我读过很多类似的帖子多维到单维 多维数据库等等 但没有一个答案有帮助 我确实在谷歌上找到了很多文档 但只提供了背景信息 并没有回答手头的问题 我有很多彼此相关的字符串 PHP 脚本中需要它们 结构是分层的 这是一个例子 A AA AAA A
  • 使用 React 组件内的 标签进行锚定导航

    我正在尝试在我的反应应用程序内的页面组件之一中设置锚点导航 我正在尝试模仿所看到的相同功能在 Draft js 上 https draftjs org docs getting started installation它使用子标题作为锚点
  • 子进程c的返回值

    我需要帮助将 状态代码 从子程序返回给父程序 它将检查状态代码 打印代码并退出父程序 这是一个班级项目 所以我会在这里放置一些相关代码 但出于明显的原因 我不会发布整个项目 我已经通过 exec 分叉并创建了子进程 父进程进行一些奇特的数学
  • 当用户关闭 IE 时显示消息框

    当用户关闭 IE 时 是否有 JavaScript 提示消息框 我尝试寻找代码示例很长一段时间但失败了 提前致谢 乔治 这是我的 html 代码 但有以下错误 有任何想法吗 为了帮助保护您的安全 Internet Explorer 已限制此
  • 每个会话的 Nhibernate 会话示例

    您好 nhibernate 的一些专业人士能给我每个会话的 Nhibernate 会话实现示例还是 unhaddins 实现吗 或者解释如何做到这一点 此致 恩迪斯 我使用 NHibernate 工作了 4 年 此前我曾与 每次操作打开会话
  • 将 IPython 控制台连接到互联网上的内核

    我一直在努力让这个工作正常进行 我已经按照我能找到的在线内容进行操作 但没有成功 例如 Ipython 文档 http ipython org ipython doc stable interactive qtconsole html 我正
  • 我需要什么类型签名才能将函数列表转换为 Haskell 代码? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 haskell 中不允许这样的函数定义 https stackoverflow com questions 6168880 why is such a function definition
  • 使用 jq 将两个 JSON 数组合并到一个文件中

    我有一个包含两个数组的 JSON 文件 我想将数组组合成一个对象数组 每个对象都包含每个原始数组中的一个元素 JSON 输入如下所示 en E1 E2 E3 E4 fr F1 F2 F3 F4 期望的输出 en E1 fr F1 en E2
  • 如何将/ff分支提升到HEAD

    我有一个受保护的分支 只有在集成构建上的集成构建通过后 才应提升 快进该分支 我目前尝试通过在集成分支的拉取请求上构建集成来解决这个问题 一旦成功 只需将发布分支快速转发到集成分支的尖端 但是 当我在 TFS 构建系统上构建分支时 它将检出
  • Visual Studio 2015 Update 2 和 Sql Server 2016 架构比较

    我最近升级到 Visual Studio 2015 Update 2 一切都很顺利 但是 现在当我尝试从数据项目与 Sql Server 2016 数据库进行架构比较时 它显示我需要在数据库中创建所有对象 在此更新之前 此功能运行良好 比较
  • 任务“:app:compileDebugJavaWithJavac”执行失败。运行 React Native 项目时

    我正在我真正的 Android 设备上运行现有的 React Native 项目 然后不知何故弹出这个错误 错误总是关于 找不到符号 我有 JDK 和 SDK 并将其添加到我的系统变量中 但我仍然不知道为什么它会给我这样的错误 我记得我只是
  • 每次向量元素变化时在 R 中分割向量

    每次元素值发生变化时 我都需要分割重复元素组的向量 例如 test vector lt c string1 string1 string1 string2 string2 string1 string1 string3 必须成为 1 1 s