R 在正则表达式中使用变量

2024-01-10

好吧——也许这是一个更好的例子。我正在寻找有关如何在正则表达式中引用变量的指南/参考 - 而不是如何为此数据构建正则表达式。

如何使用变量中的值来正则表达式下一个变量?

library(plyr)    
library(tm)
library(stringr)
library(gsubfn)

速度数据集

d1$sub <- c("LEFT CAROTID STENOSIS: (50-69)APPROXIMATELY 50-55% (0-49)LESS THAN 50%     COMMON:", "LEFT CAROTID STENOSIS: (50-69)APPROXIMATELY 60-70% (0-49)LESS THAN 50% COMMON:", "LEFT CAROTID STENOSIS: (40-60)APPROXIMATELY 40% INCOMPLETE SCAN SEE NOTES (40-50)LESS THAN 50% COMMON:")

d1$sub
[1] "LEFT CAROTID STENOSIS: (50-69)APPROXIMATELY 50-55% (0-49)LESS THAN 50% COMMON:"                        
[2] "LEFT CAROTID STENOSIS: (50-69)APPROXIMATELY 60-70% (0-49)LESS THAN 50% COMMON:"                        
[3] "LEFT CAROTID STENOSIS: (40-60)APPROXIMATELY 40% INCOMPLETE SCAN SEE NOTES (40-    50)LESS THAN 50% COMMON:"

提取子1

d1$sub1 <- as.character(lapply((strapply(d1$sub,"((?<=LEFT CAROTID STENOSIS:).{5,}?(?=(\\(|COMMON)))", perl=TRUE)), unique))
d1$sub1
[1] " (50-69)APPROXIMATELY 50-55% "                       
[2] " (50-69)APPROXIMATELY 60-70% "                       
[3] " (40-60)APPROXIMATELY 40% INCOMPLETE SCAN SEE NOTES "

现在引用 sub1 从数据中获取 sub2

想要返回“(0-49)小于 50%”、“(0-49)小于 50%”和“(40-50)小于 50%”

d1$sub2 <- as.character(lapply((strapply(d1$sub,"((?<=\\d1$sub1).*?(?=COMMON))", perl=TRUE)), unique))
d1$sub2
[1] "NULL" "NULL" "NULL"

* 原帖如下 **

我正在从文本报告中提取医疗信息,并尝试使用一个变量 ($sub1) 作为正则表达式的一部分来查找下一个变量 ($sub2)。

如何使用变量中的值来正则表达式下一个变量?

library(plyr)
library(tm)
library(stringr)
library(gsubfn)

#Dataset of velocities
d1 <- c("CCA: 135 cm/sec ICA: 50 cm/sec", "CCA: 150 cm/sec ICA: 75 cm/sec")
d1
[1] "CCA: 135 cm/sec ICA: 50 cm/sec" "CCA: 150 cm/sec ICA: 75 cm/sec"

#Lookahead to get sub1
d1$sub1 <- as.character(lapply((strapply(d1,"(.*?(?=ICA:))", perl=TRUE)), unique))
Warning message:
In d1$sub1 <- as.character(lapply((strapply(d1, "(.*?(?=ICA:))",  :
 Coercing LHS to a list
d1
[[1]]
[1] "CCA: 135 cm/sec ICA: 50 cm/sec"

[[2]]
[1] "CCA: 150 cm/sec ICA: 75 cm/sec"

$sub1
[1] "CCA: 135 cm/sec " "CCA: 150 cm/sec "

#Now reference sub1 to get sub2 - does not work?
#Want to return "ICA:50 cm/sec" and "ICA:75 cm/sec"
#Used paste(d1$sub1) to try getting the $sub1 variable into the regex, but doesn't work)
d1$sub2 <- as.character(lapply((strapply(d1,"((?<=paste(d1$sub1)).*?)", perl=TRUE)), unique))
d1$sub2
[1] "NULL" "NULL" "NULL"

文本具有结构,但在长度、内容等方面变化很大。定义第一个变量 ($sub1) 很容易,但使用它来定义第二个变量将是最精确的。

也许我应该强调文本是非常可变的 - 因此基于文本模式的简单正则表达式将不起作用。我需要使用第一个变量在文本中找到第二个变量。这是医疗信息,所以我无法发布实际数据。


尝试使用paste0()功能。这会将所有变量和您想要使用的任何正则表达式放在一起。

grep(paste0("^.*", variable, ".*$"), d1)

你还可以添加参数collapse = "" to paste0()如果你的变量可以有 >1 个元素

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

R 在正则表达式中使用变量 的相关文章

  • 将 Readability 公式转换为 python 函数

    我得到了一个名为 FRES Flesch 阅读轻松测试 的公式 用于衡量文档的可读性 我的任务是编写一个返回文本 FRES 的 python 函数 因此我需要将这个公式转换成Python函数 我已经根据我必须展示的答案重新实现了我的代码 以
  • 替换字符以制作国际字母(变音符号)

    我正在尝试模仿国际键盘的工作方式 如果您使用其中之一死钥匙 http en wikipedia org wiki Dead key后面跟着一个字母 它将它们组合成相应的字符 例如 输入 a会导致 and o结果是 etc 我似乎无法让我的正
  • Dplyr select_ 和starts_with 对变量列表中的多个值进行选择

    我正在从不同位置的不同传感器收集数据 数据输出类似于 df lt data frame date c 2011 2012 2013 2014 2015 Sensor1 Temp c 15 18 15 14 19 Sensor1 Pressu
  • Preg_split 用逗号,忽略括号,PHP

    我必须分割一个字符串 并且我想避免用括号内的逗号分割它 那么我该如何实现呢 Example string string1 sString1 sString2 ssString1 ssString2 string2 string3 resul
  • 在r中的数据框中循环线性回归输出

    我有一个下面的数据集 我想在其中对每个国家和州进行线性回归 然后绑定数据集中的预测值 添加另外三列后的最终数据框 我已经对一个国家和一个地区进行了此操作 但想对每个国家和地区进行此操作 并将预测值 上限值和下限值放回到cbind的数据集中
  • 获得各州的边界

    编辑7 经过相当多的帮助后 我已经能够得到一张接近我需要的结果的地图 但我仍然需要在地图上显示州边界 但我无法弄清楚 为了制作一个合适的可重现示例 我需要链接到数据集 因为输出太大 为了使事情变得简单 我只对三个状态进行子集化 但边界线不显
  • python 字符串操作

    我有一根绳子s带嵌套括号 s AX p gt q E p Ur 我想删除所有括号对之间的所有字符并存储在新字符串中 如下所示 new string AX E 我尝试这样做 p re compile re DOTALL new string
  • 替换“^”字符

    我正在尝试使用以下方法替换字符串上的 字符 String text text replaceAll put this text 如果文本为以下值 x my string 结果字符串是 put this textx my string 这只发
  • 在 Rdata 中保存矩阵并更新 Rdata 文件

    我有一个矩阵 mat lt matrix data 1 30 ncol 10 nrow 3 我想将其保存到 Rdata save mat file m Rdata 然后加载回来 m lt load m Rdata 然后看看它的内容 m 1
  • R 中的数据转换

    我需要以不同的方式查看数据框中的数据 问题就在这里 我有一个数据框如下 Person Item BuyOrSell 1 a B 1 b S 1 a S 2 d B 3 a S 3 e S 我需要把它改造成这样 显示该人在单个项目上进行的所有
  • R 中 bquote 中的拼接

    假设我正在使用 R 的反引号运算符构建一个表达式bquote 并且我想在列表中的特定位置 拼接 即丢失列表的外括号 例如 我有表达式 5 4 我想在其开头添加 6 而不使用字符串操作 即完全对符号结构进行操作 So gt b quote 5
  • 如何编辑 R 函数的源代码?

    我正在与earlywarnings包 并想编辑其中编写的函数之一qda ews功能 我可以fix 但我想编辑的功能由于某种原因在我使用时没有列出fix 该函数称为generic RShiny 这是 github 的链接 https gith
  • 带有 = 和 a 的正则表达式;

    我正在尝试使用正则表达式来查找以等号开头的所有子字符串 并以分号 之间可以有任意数量的字符 应该是这样的 由于某种原因 equals 没有注册 是否有某种转义字符可以使正则表达式注意到我的等号 我正在用Java工作 如果这与这个问题有任何关
  • 与 RTL 语言一起使用时字符串替换函数调用的顺序

    打电话时字符串替换 https developer mozilla org en US docs Web JavaScript Reference Global Objects String replace with a 替换功能我们能够检
  • 从上一列中减去一列

    样本数据 dfData lt data frame ID c 1 2 3 4 5 DistA c 10 8 15 22 15 DistB c 15 35 40 33 20 DistC c 20 40 50 45 30 DistD c 60
  • 通过 read.big.matrix 读取 R 中的大数据

    我正在使用 r 读取尺寸为 3131875 5 的数据read big matrix 我的数据既有字符列又有数字列 包括日期变量 我应该使用的命令是 as1 lt read big matrix C Documents and Settin
  • Perl:Chomping字符串后,它不打印字符串的值

    所以我目前正在尝试编写一个 perl 脚本来读取一个文件并写入另一个文件 目前 我遇到的问题是从解析的行中删除换行符 我输入这样的文件 BetteDavisFilms txt 1 Wicked Stepmother 1989 as Mira
  • R:动态创建变量名

    我正在寻找使用 for 循环创建多个数据帧 然后将它们缝合在一起merge 我可以使用创建我的数据框assign paste blah 但是 在同一个 for 循环中 我需要删除每个数据帧的第一列 这是我的代码的相关部分 for j in
  • 如何通过 R 的 cor() 的相关分析计算 P 值和标准误差

    I have data http dpaste com 1064360 plain 其中包含每个条件 x 和 y 的 54 个样本 我通过以下方式计算了相关性 gt dat lt read table http dpaste com 106
  • 带有 R 传单的自定义图例 - 同一图例中的圆形和正方形

    我想创建一个传单地图 在同一个传单图图例中既有圆形又有正方形 到目前为止 我已经使用了上一篇文章中的建议 并在我闪亮的 UI 代码中添加了以下代码 tags style type text css html body width 100 h

随机推荐