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 在正则表达式中使用变量 的相关文章

  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 在 R 中使用 Huggingface Transformer 模型

    我正在尝试在 R 中使用不同的 Huggingface 模型 这是通过 reticulate 导入 Transformer 包来实现的 谢谢 https rpubs com eR ic transfoRmers https rpubs co
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 与有效正则表达式匹配的正则表达式

    是否存在与有效正则表达式匹配的正则表达式 我知道正则表达式有多种风格 其中一种就可以了 是否存在与有效正则表达式匹配的正则表达式 根据定义 它非常简单 No 所有正则表达式的语言是no regular语言 只需查看嵌套括号 因此不可能有re
  • 如何从shiny中将数据下载到多张纸上?

    我们如何将数据从 Shiny 下载到多个工作表并命名每个工作表 例如下面 ginberg将mtcars数据保存在sheet1中 我们可以将头部 mtcars 保存在sheet2中吗 另外 我们可以对这些工作表进行不同的命名吗 例如sheet
  • 捕获段错误、内存未映射错误

    我试图在 R 中找到 1347 x 209974 矩阵的列的相关性 每次我这样做 使用一个简单的命令cor matrix 我收到消息 caught segfault address 0xffffffffd058abf8 cause memo
  • [A-Z] 表示 [A-Za-z] 是怎么回事?

    我已经注意到 至少在我使用的一些基于 Unix 的系统上 ls A Z 已经给了我预期的结果ls A Za z 让我无法轻松获得以大写字母开头的该死的文件列表 我刚刚遇到了同样的事情grep 我无法让它停止与小写字母匹配 A Z 直到我最终
  • 如何在我自己的网络服务器上导出并托管 ggvis 图表?

    据我了解 ggvis 运行在闪亮的之上 但我不知道如何在没有 R shiny 的情况下导出在网络服务器上运行单个 ggvis 图表所需的所有文件 这对于交互式绘图来说是不可能的 因为 每个交互式 ggvis 图都必须连接到正在运行的 R 会
  • ggplot 直方图相对于轴的位置不正确

    我试图这样绘制直方图 Todo lo haremos con base en un variable aleatoria Uniforme 0 1 set seed 26 n 10000 U lt runif n n Supongamos
  • 用于在子字符串中用破折号替换空格的正则表达式。

    我一直在努力寻找一种方法 可以用字符串中的破折号替换空格 但只能替换字符串特定部分内的空格 Source ABC This is a sub string DEF 我对正则表达式的尝试 s g 如果我使用正则表达式来匹配空格并替换 我会得到
  • 在 R 中使用 nls 重新创建研究

    我正在学习如何在 R 中使用 nls 函数 但遇到了一些问题 我现在只是试图重新创建研究论文中发现的曲线 该模型拟合了 1987 年崩盘前股市走势的曲线 我定义了一个函数func 如下 func lt function a b tc t a
  • 使用 R 交互式更改 Plotly 图像中的轴刻度(线性/对数)

    Goal 创建交互式下拉菜单 按钮来更新 R 中 Plotly 图形的轴比例 Issue 有很多关于创建的文档buttons https plot ly r custom buttons and 对数图 https plot ly r lo
  • Python正则表达式从字符串中获取浮点数

    我正在使用正则表达式来解析字符串中的浮点数 re findall a zA Z d d t 是我使用的代码 这段代码有问题 如果数字和任何字符之间没有空格 则不会解析该数字 例如 0 1 2 3 4 5 6 7 8 9 的预期输出为 0 1
  • 捕获 XSS(跨站脚本)攻击的最佳正则表达式(Java 中)?

    杰夫实际上在净化 HTML http refactormycode com codes 333 sanitize html 但他的示例是用 C 编写的 而我实际上对 Java 版本更感兴趣 有人有更好的 Java 版本吗 他的示例是否足以直
  • 基于条件反应逻辑闪亮的 Flexdashboard

    我正在尝试有条件地进行一种类型的渲染 renderPlot 或其他 renderText 基于一些输入 这是我尝试过的 title Citation Extraction output flexdashboard flex dashboar
  • 如果字符串包含数字,则仅返回字符串中的数字

    例如 字符串是abc123CD需要找到一种只读方法numbers在字符串中i e select a postgres function abc123CD Result 123 My try select substring abc123CD

随机推荐