R中根据字符分割字符串

2024-01-08

我的数据集中有一列,其中有一个我想要拆分的字符串。

df = data.frame(col = c("BrBkRY","BBkRBr","YBRG","RBBk"))

这是我想用来有条件分割的向量。

sep = c("Br","Bk","R","Y","B","G")

这就是最终的样子。我是用手做的。

df2 = data.frame(col = c("BrBkRY","BBkRBr","YBRG","RBBk"), 
                 col1 = c("Br","B","Y","R"),
                 col2 = c("Bk","Bk","B","B"),
                 col3 = c("R","R","R","Bk"),
                 col4 = c("Y","Br","G",""))
df2 
     col col1 col2 col3 col4
1 BrBkRY   Br   Bk    R    Y
2 BBkRBr    B   Bk    R   Br
3   YBRG    Y    B    R    G
4   RBBk    R    B   Bk     

我正在考虑使用正则表达式,但通常,您需要一个分割字符,例如. or -。但对于基于字符的字符串,我不知道。此外,不想将 BkB 拆分为 B、k 和 B。但我确实想将其拆分为 Bk 和 B。是否有一个包可以做到这一点?


您可以使用lookahead和lookbehind通过正则表达式进行分割。该表达式表示在任意字符和大写字母之间的空格上进行分割。(?<=.)指定前导“任何字符”并且(?=[A-Z])指定以下国会大厦。 “任何角色”和国会大厦实际上并不是比赛的一部分,因此它们不会在分裂中“被吸走”。

> lst <- strsplit(as.character(df$col), '(?<=.)(?=[A-Z])', perl=TRUE)
> lst
[[1]]
[1] "Br" "Bk" "R"  "Y" 

[[2]]
[1] "B"  "Bk" "R"  "Br"

[[3]]
[1] "Y" "B" "R" "G"

[[4]]
[1] "R"  "B"  "Bk"

然后可以构建列,例如与 akrun 的答案完全相同:

dfN <- cbind(df[1], do.call(rbind, lapply(lst, `length<-`, max(lengths(lst)))))
colnames(dfN)[-1] <- paste0("col", colnames(dfN)[-1])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R中根据字符分割字符串 的相关文章

  • 有没有更简单的方法来分割/重建字符串?

    目前我正在使用String split 像这样 String tmp props get i getFullName split String name for int j 1 j lt tmp length j if j gt 1 nam
  • 在 R 中创建一个运行计数变量?

    我有一个足球比赛结果的数据集 我希望通过创建一组类似于世界足球 Elo 公式的运行评级来学习 R 我遇到了麻烦 在 Excel 中看似简单的事情在 R 中并不完全直观 例如 4270 个观察中的前 15 个具有必要的变量 date t 1
  • 如何将完整的日期格式拆分为日期和时间?

    我有很多格式为我的示例所示的字符串 我必须解析它们 我正在尝试确定今天是哪根弦 我的问题是 时间快到了 我只需要比较那个日期 接下来我想检查时间是否在 after 和 before 的两个时间戳 HH mm ss 之间 但存在问题 日期几乎
  • 在shiny中过滤传单地图数据

    我在用传单地图设置这个闪亮的东西时遇到了麻烦 我的原帖 https stackoverflow com questions 50111566 applying leaflet map bounds to filter data within
  • 如何在 Perl 中使用 use strict 一次一行处理多行字符串?

    我正在尝试找出 PBP 批准的正确方法来一次一行处理多行字符串 许多 Perl 编码人员建议将多行字符串视为文件句柄 除非您在脚本中使用 use strict 否则它可以正常工作 然后 您会收到编译器发出的警告 提示在使用严格引用时无法使用
  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 如何删除箱线图上的刻度线

    我试图从箱线图中删除 x 轴刻度线 但保留与刻度线关联的标签 这在基础 R 中可能吗 colors lt c lightskyblue3 gray78 gold1 wheat1 boxplot avgscore module data mi
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • 是否有用于 C 字符串的标准 C++ 迭代器?

    有时我需要使用通用 C 迭代器范围接口将 C 字符串传递给函数 first last 是否有针对这些情况的标准 C 迭代器类 或者无需复制字符串或调用的标准方法strlen 编辑 我知道我可以使用指针作为迭代器 但我必须知道字符串在哪里结束
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • twitterR 和 ROAuth R 软件包安装

    我在安装 CRAN 上的 twitteR 和 RAOuth 软件包时遇到一些问题 我尝试了几种不同的方法 在 Windows 下使用源代码 在 Ubuntu 下使用 RStudio 我尝试了以下命令 sudo apt get install
  • 当字符串的长度大于n时,如何打印字符串的前n个字节?

    所以我有一个具有一定字节数 或长度 的字符串 我说字节是因为字符串末尾没有 NULL 终止符 不过 我知道绳子有多长 通常 众所周知 当您printf s str 它将继续打印每个字节 直到到达 NULL 字符 我知道没有 C 字符串不是
  • 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

    function blobToString blob var reader new FileReader var d reader onloadend function d callback reader result console lo
  • API 请求和curl::curl_fetch_memory(url, handle = handle) 中的错误:SSL 证书问题:证书已过期

    几天前 我运行了代码几个月 没有任何问题 GET url myurl query 今天我遇到一个错误 Error in curl curl fetch memory url handle handle SSL certificate pro
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望

随机推荐

  • Akka Stream + Akka Http - 获取错误请求

    我有以下效果很好的流 source map x gt HttpRequest uri x rawRequest via Http outgoingConnection host port to Sink actorRef myActor I
  • PHP 中 ArrayIterator、ArrayObject 和 Array 的区别

    有人可以清楚地解释一下之间的根本区别吗ArrayIterator ArrayObject and ArrayPHP的功能和操作方面 谢谢 Array是原生 php 类型 您可以使用 php 语言构造创建一个array 或从 php 5 4
  • Silex SwiftMailer 在执行时未建立 SMTP 连接

    我正在制作一个使用 SwiftMail 扩展进行发送的控制台应用程序 根据我们的政策 我有两台虚拟机 一台用作 SMTP 中继 另一台用作应用程序服务器 通过 telnet 手动向中继发送邮件效果很好 使用 SwiftMail 时 它出现故
  • 个人版本控制器

    我想知道是否有个人源代码控制器 我想在我的机器上有一个存储库 而无需设置服务器 而且我使用 TeX 文件而不是任何特定语言 我希望有像子版本一样备份我的文件 如果你安装乌龟SVN http tortoisesvn net 您的 Window
  • 为什么 C++ 模运算符对于 -1 % str.size() 返回 0?

    我很困惑为什么以下代码会产生此输出 include
  • 命令在 shell 中有效,但在脚本中无效 [重复]

    这个问题在这里已经有答案了 我正在使用命令ls files text txt xt 获取以任何模式结尾的所有文件 当我在 shell 中运行它时 我得到这个结果 ls files text txt xt files f1 text file
  • 如何在 tidyr 中使用 Gather_ 和变量

    我将 tidyr 与闪亮一起使用 因此需要在 tidyr 操作中利用动态值 然而 我在使用 Gather 时遇到了麻烦 我认为它是为这种情况设计的 下面的最小示例 library tidyr df lt data frame name le
  • CI运行时执行失败:执行失败:无法启动容器进程:打开/dev/pts/0:不允许操作:未知

    当我运行以下命令时 docker compose exec web bash 这是我遇到的错误 OCI 运行时执行失败 执行失败 无法启动容器进程 打开 dev pts 0 不允许操作 未知 这也发生在我身上 但我不小心停止了容器 重新启动
  • 确定夏令时是否有效? SQL服务器

    我有一个包含用户 UTC 时间偏移以及他们是否遵守夏令时的表 是否有内置方法可以获取正确的用户时间 这并非在所有情况下都有效 但对于美国 DST 定义为 3 月第 2 个星期日到 11 月第 1 个星期日之间的用户来说 这是一个快速解决方案
  • Pandas DataFrame.to_csv 引发 IOError:没有这样的文件或目录

    你好 我正在尝试使用Pandas DataFrame to csv方法来保存dataframe to a csv file filename dir name csv df to csv filename 但是我收到错误 IOError E
  • iTextSharp - XFA 填充日期/时间字段

    工作流程是这样的 我们下载一个模板表单 预填充静态值 导出 XML 模板 使用 NET 表单应用程序解析 XML 添加动态值 生成的 XML 需要重新导入到 PDF 模板中 在 iTextSharp 上使用 MergeXfaData 方法一
  • xlwings - 删除一系列行

    我似乎找不到一种方法来删除从第 x 行开始到工作表底部的一系列行 例如在VBA代码中我会这样做 Rows CStr currRow 65536 Select Selection Delete Shift xlUp 其中 currRow 可以
  • 降低 Vuetify 下拉菜单的高度

    我无法降低 Vuetify 下拉组件的高度v select 我尝试使用道具dense但它只会降低要选择的选项的高度 并且不会对关闭的下拉列表产生任何影响 我尝试了以下模板代码
  • Android O:通知通道本地化

    我创建了一个这样的通知通道 NotificationChannel channel new NotificationChannel CHANNEL ID FOOBAR getContext getString R string notifi
  • 利用 BackGroundWorker 在 Winforms 控件上跨线程调用 GUI 操作?

    受到我自己使用多线程 Winforms 应用程序的经验以及诸如此类的问题的启发 避免跨线程 WinForm 事件处理中 Invoke BeginInvoke 的麻烦 https stackoverflow com questions 136
  • 如何使用鼠标拖动来画线?

    我需要使用光标在delphi中画一条线 我已经创建了线代码 但我不知道下一步该做什么 如何才能做到这一点 我按下鼠标 当线条需要开始并拖动鼠标时 或者简单地释放鼠标按钮并绘制线条 procedure TForm1 Button1Click
  • 如何查明在我的 servlet 中按下了哪个 HTML 按钮?

    我正在创建一个包含两个提交按钮的注册表单 我需要知道在我的 servlet 代码中单击了表单中的哪个按钮 阅读以下问题的答案这个问题 https stackoverflow com questions 5222 accessing post
  • 获取有关 LLDB 中错误内存地址的信息

    我正在尝试在我的 iPhone 应用程序中调试 EXC BAD ACCESS 它在方法调用时崩溃 并且该方法的行是EXC BAD ACCESS code 1 address xxx 以前 我只会使用gdb info malloc histo
  • 一堂课可以延长两堂课吗?

    我的班级应该同时扩展两个班级 public class Preferences extends AbstractBillingActivity public class Preferences extends PreferenceActiv
  • R中根据字符分割字符串

    我的数据集中有一列 其中有一个我想要拆分的字符串 df data frame col c BrBkRY BBkRBr YBRG RBBk 这是我想用来有条件分割的向量 sep c Br Bk R Y B G 这就是最终的样子 我是用手做的