在 R 中查找并替换两个字符串之间的文本

2023-12-15

我在一些 Rscripts 中创建了一些关于 R 的教程。我需要一个讲义集(HS)和一个没有答案的编码集(CS),学生可以在其中编码。我需要一些帮助正则表达式来搜索 HO 中的答案部分,以便我可以将其从 CS 中删除。

在 HS 中,我在答案之前/之后有开始 (#'YOUR_ANSWER) 和结束 (#'END_ANSWER) 标志。要创建 HO 集,我需要替换

YOUR_ANSWER
As_samp2 = 36
As_samp3 = 38      
#'END_ANSWER

with

"space for answer".  

因此,如果我的文本位于:

a = "#'YOUR_ANSWER
       As_samp2 = 36
       As_samp3 = 38

       #'END_ANSWER"

我尝试过正则表达式,但没有替代品

b <-gsub(pattern = "YOUR_ANSWER(.*\n*)*#'END_ANSWER", a, replace="space for answer" )

如果我不使用正则表达式,我只会找到“你的答案” - 替换有效,即

c <-gsub(pattern = "YOUR_ANSWER", a, replace="space for answer" )

如果我只是做正则表达式,正如预期的那样,所有文本都会被替换,即

d <- gsub(pattern = "(.*\n*)*", a, replace="space for answer" )

但该组合不起作用。 正则表达式应该可以工作,请参阅:

https://regex101.com/r/USvzLF/1

所以一定有一些我没有得到的深刻的 R 魔法

    b <- gsub(pattern = "YOUR_ANSWER(.*\n*)*END_ANSWER", a, replace="space for answer" )
    c <- gsub(pattern = "YOUR_ANSWER", a, replace="space for answer" )
    d <- gsub(pattern = "(.*\n*)*", a, replace="space for answer" )

我希望将 YOUR_ANSWER 和 END_ANSWER 之间的所有内容替换为答案空间 但什么也没发生。有任何想法吗? 现在更新 @r2evans 已经向我展示了正则表达式的工作; 我试图更改的 R 脚本是https://pastebin.com/mnjpkUFk(即我的文件) 我用来尝试更改它的代码(在单独的 R 脚本中)是: FileM


问题是您将文件作为字符向量列表读取并应用一个期望的正则表达式单个多行文本作为输入。

> FileM
 [1] "#'Rstudio environment"                                                             "#'==="                                                                            
 [3] " "                                                                                 "#'Top Left - scripts"                                                             
 [5] "#+"                                                                                "myfirstvariable = \"Hello R\"  #press control enter with cursor on line  "        
 [7] "myfirstvariable"                                                                   "As_samp1 = 34"                                                                    
 [9] " "                                                                                 "#'practical: create variables for arsenic concentration in 2 more samples"        
[11] "#+"                                                                                "#'YOUR_ANSWER"                                                                    
[13] "As_samp2 = 36"                                                                     "As_samp3 = 38"                                                                    
[15] " "                                                                                 "#'END_ANSWER"                                                                     
[17] "#+"                                                                                "#'Bottom Left - console"                                                          
[19] "#+"                                                                                "2+2"                                                                              
[21] " "                                                                                 "#'practical: calculate average As concentration, store result in variable As_mean"
[23] "#+"                                                                                "#'YOUR_ANSWER"                                                                    
[25] "As_mean<- (As_samp1 + As_samp2 + As_samp3)/3"                                      "#'END_ANSWER"                                                                     
[27] "#+"                                                                                "#'A word on comments"                                                             
[29] "#This is a comment"                                                                "#ignore #' and #+ <br/><br/>"     

因此,您应该在运行正则表达式之前加入这些行:

FileM <- paste(FileM, collapse="\n")

然后,使用

FileMedit <- gsub("YOUR_ANSWER.*?END_ANSWER", "space for answer", FileM)

Now, cat(FileMedit, collapse="\n") shows

#'Rstudio environment
#'===
 
#'Top Left - scripts
#+
myfirstvariable = "Hello R"  #press control enter with cursor on line  
myfirstvariable
As_samp1 = 34
 
#'practical: create variables for arsenic concentration in 2 more samples
#+
#'space for answer
#+
#'Bottom Left - console
#+
2+2
 
#'practical: calculate average As concentration, store result in variable As_mean
#+
#'space for answer
#+
#'A word on comments
#This is a comment
#ignore #' and #+ <br/><br/>

现在,保存它:

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

在 R 中查找并替换两个字符串之间的文本 的相关文章

  • 如何在 R 中为回归量创建“宏”?

    对于长且重复的模型 我想创建一个 宏 在 Stata 中称为 宏 并通过以下命令完成 global var1 var2 其中包含回归量的模型公式 例如来自 library car lm income education prestige d
  • 使用 Python 从网站下载所有 pdf 文件

    我遵循了几个在线指南 试图构建一个可以识别并从网站下载所有 pdf 的脚本 从而避免我手动执行此操作 到目前为止 这是我的代码 from urllib import request from bs4 import BeautifulSoup
  • 将日期时间字符串转换为 Date 类

    我有一个带有日期时间字符列的数据框 当我使用as Date 除了少数实例之外 我的大多数字符串都被正确解析 下面的示例有望向您展示发生了什么 my attempt to parse the string to Date uses the s
  • 正则表达式,选择最接近的匹配

    假设以下单词序列 BLA text text text text text text BLA text text text text LOOK text text text BLA text text BLA 我想做的是将 BLA 中的文本
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • R闪亮主面板显示样式和字体

    我正在学习闪亮的应用程序 并且有一些关于调整布局的基本问题 特别是样式和字体 希望得到指点或明确的答案 谢谢 考虑一个基本的输入输出应用程序 用户在 sidebarPanel 中输入数据 然后在 mainPanel 中反应性地输出结果 如何
  • 如何使用 PHP 从内容中查找 URL?

    需要一个简单的 preg match 它将在内容中查找 c aspx 不带引号 如果找到 它将返回整个 url 举个例子 content div 4 a href m c aspx mt 01 9310ba801f1255e02e411d8
  • 为每个因素级别添加日期时间序列

    我有一个带有因子列的数据框 s lt data frame id 901 910 s id lt as factor s id 我有一个日期时间序列 library lubridate start lt now as difftime 2
  • 改进R中从google获取股票新闻数据的功能

    我已经编写了一个函数来从 Google 获取和解析给定股票代码的新闻数据 但我确信有一些方法可以改进它 对于初学者来说 我的函数返回一个 GMT 时区的对象 而不是用户当前的时区 如果传递的数字大于 299 它就会失败 可能是因为 goog
  • bash 支持字边界正则表达式吗?

    我试图在再次添加该单词之前匹配列表中是否存在该单词 以避免重复 我正在使用 bash 4 2 24 并尝试以下操作 foo bmyword b also foo
  • 如何使用autoconf重新生成配置文件?

    我使用 autoconf 重新生成配置文件 它有效 但是当我执行生成的配置文件时 configure 有一些错误消息 例如 configure line 3713 syntax error near unexpected token bla
  • R data.table 多个条件连接

    我设计了一种解决方案 用于从两个单独数据表的多个列中查找值 并添加基于新列的值计算 多个条件比较 代码如下 它涉及在计算两个表中的值时使用 data table 和联接 但是 这些表没有联接在我正在比较的列上 因此我怀疑我可能无法获得 da
  • 如何在基数 R 中进行分组

    我想使用以下 SQL 查询来表达base R 没有任何特定的包 select month day count as count avg dep delay as avg delay from flights group by month d
  • R 错误:无法更改锁定绑定的值

    我试图估计无限数字流的平均值和标准差 当我运行代码时 出现错误消息 无法更改锁定绑定的值 我做了一些研究 发现这个错误与我使用全局变量有关 但我无法弄清楚 任何帮助将非常感激 在此先感谢您的帮助 define global variable
  • RStudio 不会通过 rPython 调用加载所有 Python 模块

    我从 Bash 和 RStudio 中运行相同的脚本时出现一些意外行为 请考虑以下事项 我有一个文件夹 rpython 包含两个脚本 test1 R library rPython setwd rpython python load tes
  • 正则表达式验证字符串是否包含三个非空白字符

    我使用欧芹 js 来验证输入 并且使用 data parsley pattern 它允许我传递正则表达式 我正在尝试验证该字符串以确保它至少包含三个非空白字符 下面是应该无效或有效的字符串 valid 1 2 b invalid 1 b s
  • 函数“[<-”将_替换_一个元素,但不会追加_元素_

    我在使用时注意到以下几点 lt 我成功于替换元素但不位于追加向量的一个元素 例子 VarX lt integer VarX 1 lt 11 lt VarX 2 22 VarX 1 11 Expected the value of VarX
  • 通过 r markdown 中的循环创建代码片段

    如同如何使用R中的knitr创建一个包含代码块和文本的循环 https stackoverflow com questions 36373630 how to create a loop that includes both a code
  • R 中使用 `UseMethod()` 与 `inherits()` 来确定对象的类

    如果我需要根据 R 对象的类以不同的方式处理它们 我可以使用if and else在单个函数内 foo lt function x if inherits x list Foo the list else if inherits x num

随机推荐

  • vbs 脚本中的 If-Else If 语句

    我需要知道如何制作 if else if 语句 以便根据用户按下的按钮 答案 显示不同的消息 您可以使用If ElseIf and End If指令 If i 10 Then response write Just started Else
  • 如何在 jQuery 中获取第一个元素而不是使用 [0]?

    我是 jQuery 的新手 如果这是一个愚蠢的问题 我深表歉意 当我使用它使用 id 查找元素时 我知道总是有一个匹配项 为了访问它 我将使用索引 0 有更好的方法吗 例如 var gridHeader grid GridHeader 0
  • 将包含字典的单元格分解为 Pandas 中的多行[重复]

    这个问题在这里已经有答案了 如何将包含字典的单元格中的内容分解为 Pandas 中的多行 ID CODES A 1407273790 5 1801032636 20 1174813554 1 1215470448 2 1053754655
  • 加载多个 javascript 文件 - jquery

    我使用下面的代码动态加载js脚本 getScript site js test js done function script textStatus console log test js textStatus 如果我想在同一段代码中加载多
  • 简单的 D3 演示不适用于更改后的结构

    我正在关注official教程 由于结构相当简陋 我决定做一个更干净的结构
  • 从简单的 get 返回 403 Forbidden 但在浏览器中加载正常

    我试图从页面获取一些数据 但它返回错误 403 禁忌 我以为是用户代理 但我尝试了几个用户代理 它仍然返回错误 我也尝试使用图书馆假用户代理但我没有成功 with requests Session as c url headers User
  • 可放入 Famous.js 中吗?

    我正在尝试在known djs 中实现可拖动 可放置的图像 也就是说 如果图像掉落到正确的表面上 就会触发事件 在我的可拖动图像上 我正在监听 touchend 事件 这里没问题 我还有一个连接到我的 目标 表面的 touchend 事件
  • 为什么 List 分区有效而 span 无效

    我有这个 Char Int pars 的列表 它包含仅具有唯一 Char 值的对 List 3 d 1 e 3 h 3 i 1 l 3 o 2 r 2 t 1 w 1 我需要将此列表分为 2 个 一个包含任何具有 d 字符的对 另一个是其余
  • Python 2.7:奇怪的 Unicode 行为

    我在 Python 2 7 中遇到以下行为 gt gt gt a1 u U0001f04f 1 gt gt gt a2 u ud83c udc4f 2 gt gt gt a1 a2 3 False gt gt gt a1 encode ut
  • 限制 Azure Functions 队列上的并发作业数

    我在 Azure 中有一个函数应用程序 当将项目放入队列时会触发该应用程序 它看起来像这样 大大简化 public static async Task Run string myQueueItem TraceWriter log using
  • M/PowerBI/PowerQuery 中的 [column] 和 Table.Column(Table, "column") 有什么区别

    再见 我对 column 和 column 之间的差异有疑问表 Column 表 列 在 M PowerBI PowerQuery 中 示例表 柱子1 a2 b3 c 期望的结果 柱子1 测试2 测试3 测试 所以 我目前有以下代码 Tab
  • YouTube iOS SDK:正确的 GTLQueryYouTube 参数以过滤掉无法在移动设备上播放的视频?

    我正在尝试找到正确的 GTLQueryYouTube 参数来过滤掉无法在移动设备上播放的视频 在 iOS UIWebView 中 videoEmbeddable 和 videoSyndicated 参数限制过多 它们会过滤掉所有 VEVO
  • C++ 模板 - 指定容器类型及其所持有的容器元素类型

    我希望能够创建一个函数 在其中指定一个参数以同时具有模板化容器和该容器的模板化元素类型 这可能吗 我收到 错误 C2988 无法识别的模板声明 定义 等信息 这是有问题的函数 template
  • 如何计算卷积神经网络的参数个数?

    我正在使用 Lasagne 为 MNIST 数据集创建 CNN 我密切关注这个例子 使用 Python 进行卷积神经网络和特征提取 我目前拥有的 CNN 架构 不包含任何 dropout 层 是 NeuralNet layers input
  • Python如何读取和解释源文件?

    假设我运行一个 Python 2 7 尽管我不确定这在这里有什么不同 脚本 我没有终止脚本 而是退出 或者以某种方式切换回我的编辑环境 然后我可以修改脚本并保存它 但这不会改变仍在运行的脚本中的任何内容 Python 在启动时是否将所有源文
  • 从数据库 SQL oracle 保存和获取 blob 时出错

    我试图将 CLOB 保存到数据库中并恢复它 但我收到 SQLException Caused by java sql SQLException Lob read write functions called while another re
  • 在 iPhone 上混合音频

    我有许多静态音频文件 我希望能够动态地混合在一起并在 iPhone 上播放 不是一次性全部播放 最常见的情况是将两个或三个音频流混合到一个流中 我该用什么 我知道 OpenAL 和音频单元可能有用 但哪一个呢 为了快速启动 是否有具体的代码
  • 用笑话和酶在 React 中测试表单

    我完全迷失了尝试测试用 React 制作的简单表单 我如何知道提交按钮是否正常工作 经过一番研究后 我认为这样做的方法是创建一个模拟函数 然后检查它是否被调用 但我很确定我做的完全错误 onObjSubmit event event pre
  • Tensorflow lite 对象检测示例中相机的屏幕尺寸

    在tensorflow lite示例对象检测中 相机不会拍摄整个屏幕 而只会拍摄一部分 我试图在 CameraActivity CameraConnectionFragment 和 Size 类中找到一些常量 但没有结果 所以我只是想要一种
  • 在 R 中查找并替换两个字符串之间的文本

    我在一些 Rscripts 中创建了一些关于 R 的教程 我需要一个讲义集 HS 和一个没有答案的编码集 CS 学生可以在其中编码 我需要一些帮助正则表达式来搜索 HO 中的答案部分 以便我可以将其从 CS 中删除 在 HS 中 我在答案之