R:用 sub 替换多个正则表达式

2023-12-13

我有一个包含以下值的字符向量:

 [1] tBodyAcc-mean()-X           tBodyAcc-mean()-Y           tBodyAcc-mean()-Z           tBodyAcc-std()-X           
 [5] tBodyAcc-std()-Y            tBodyAcc-std()-Z            tGravityAcc-mean()-X        tGravityAcc-mean()-Y       
 [9] tGravityAcc-mean()-Z        tGravityAcc-std()-X         tGravityAcc-std()-Y         tGravityAcc-std()-Z        
[13] tBodyAccJerk-mean()-X       tBodyAccJerk-mean()-Y       tBodyAccJerk-mean()-Z       tBodyAccJerk-std()-X       
[17] tBodyAccJerk-std()-Y        tBodyAccJerk-std()-Z        tBodyGyro-mean()-X          tBodyGyro-mean()-Y         
[21] tBodyGyro-mean()-Z          tBodyGyro-std()-X           tBodyGyro-std()-Y           tBodyGyro-std()-Z          
[25] tBodyGyroJerk-mean()-X      tBodyGyroJerk-mean()-Y      tBodyGyroJerk-mean()-Z      tBodyGyroJerk-std()-X      
[29] tBodyGyroJerk-std()-Y       tBodyGyroJerk-std()-Z       tBodyAccMag-mean()          tBodyAccMag-std()          
[33] tGravityAccMag-mean()       tGravityAccMag-std()        tBodyAccJerkMag-mean()      tBodyAccJerkMag-std()      
[37] tBodyGyroMag-mean()         tBodyGyroMag-std()          tBodyGyroJerkMag-mean()     tBodyGyroJerkMag-std()     
[41] fBodyAcc-mean()-X           fBodyAcc-mean()-Y           fBodyAcc-mean()-Z           fBodyAcc-std()-X           
[45] fBodyAcc-std()-Y            fBodyAcc-std()-Z            fBodyAccJerk-mean()-X       fBodyAccJerk-mean()-Y      
[49] fBodyAccJerk-mean()-Z       fBodyAccJerk-std()-X        fBodyAccJerk-std()-Y        fBodyAccJerk-std()-Z       
[53] fBodyGyro-mean()-X          fBodyGyro-mean()-Y          fBodyGyro-mean()-Z          fBodyGyro-std()-X          
[57] fBodyGyro-std()-Y           fBodyGyro-std()-Z           fBodyAccMag-mean()          fBodyAccMag-std()          
[61] fBodyBodyAccJerkMag-mean()  fBodyBodyAccJerkMag-std()   fBodyBodyGyroMag-mean()     fBodyBodyGyroMag-std()     
[65] fBodyBodyGyroJerkMag-mean() fBodyBodyGyroJerkMag-std() 

我想用 repl 模式替换名称模式:

l_name_patterns <- c("^t{1}","^f{1}","*BodyBody*","*Body*","*Acc*", "*Gravity*","*Gyro*", "*Mag*", "*Jerk*")
l_repl_patterns <- c("Time ", "Frequency ","Body","Body ","Accelerator ", "Gravity ", "Gyroscope ","Magnitude ", "Jerk ")

我想使用 sub 或另一个类似的函数进行多次替换,因为 sub 文档说:

   pattern: If a character vector of length 2 or more is supplied, the first element is used with a warning. 

我是这样做的:

for ( i in 1:length(l_name_patterns) )
{

  print(l_name_patterns[i])

l_names <- sub( pattern  = l_name_patterns[i]
            , replacement = l_repl_patterns[i]
            , x           = l_names
            )

}

有人有更优雅的方法吗?

Thanks


你可以尝试

library(qdap)
mgsub(l_pattern, l_replacement, l_names)
#[1] "yM tsop on StackOverflow"

对于你帖子中的例子

res <- mgsub(l_name_patterns, l_repl_patterns, l_names, fixed=FALSE)
head(res,3)
#[1] "Time Body Accelerator -mean()-X" "Time Body Accelerator -mean()-Y"
#[3] "Time Body Accelerator -mean()-Z"

data

l_names <- "My post on StackOverflow" 
l_pattern <- c("post","My")
l_replacement <- c( "tsop", "yM") 

帖子中的示例数据

l_names <- c("tBodyAcc-mean()-X", "tBodyAcc-mean()-Y", "tBodyAcc-mean()-Z", 
 "tBodyAcc-std()-X", "tBodyAcc-std()-Y", "tBodyAcc-std()-Z", "tGravityAcc-mean()-X", 
 "tGravityAcc-mean()-Y", "tGravityAcc-mean()-Z", "tGravityAcc-std()-X", 
 "tGravityAcc-std()-Y", "tGravityAcc-std()-Z", "tBodyAccJerk-mean()-X", 
  "tBodyAccJerk-mean()-Y", "tBodyAccJerk-mean()-Z", "tBodyAccJerk-std()-X", 
 "tBodyAccJerk-std()-Y", "tBodyAccJerk-std()-Z", "tBodyGyro-mean()-X", 
 "tBodyGyro-mean()-Y", "tBodyGyro-mean()-Z", "tBodyGyro-std()-X", 
 "tBodyGyro-std()-Y", "tBodyGyro-std()-Z", "tBodyGyroJerk-mean()-X", 
 "tBodyGyroJerk-mean()-Y", "tBodyGyroJerk-mean()-Z", "tBodyGyroJerk-std()-X", 
 "tBodyGyroJerk-std()-Y", "tBodyGyroJerk-std()-Z", "tBodyAccMag-mean()", 
 "tBodyAccMag-std()", "tGravityAccMag-mean()", "tGravityAccMag-std()", 
  "tBodyAccJerkMag-mean()", "tBodyAccJerkMag-std()", "tBodyGyroMag-mean()", 
  "tBodyGyroMag-std()", "tBodyGyroJerkMag-mean()", "tBodyGyroJerkMag-std()", 
  "fBodyAcc-mean()-X", "fBodyAcc-mean()-Y", "fBodyAcc-mean()-Z", 
  "fBodyAcc-std()-X", "fBodyAcc-std()-Y", "fBodyAcc-std()-Z", "fBodyAccJerk-mean()-X", 
  "fBodyAccJerk-mean()-Y", "fBodyAccJerk-mean()-Z", "fBodyAccJerk-std()-X", 
  "fBodyAccJerk-std()-Y", "fBodyAccJerk-std()-Z", "fBodyGyro-mean()-X", 
  "fBodyGyro-mean()-Y", "fBodyGyro-mean()-Z", "fBodyGyro-std()-X", 
  "fBodyGyro-std()-Y", "fBodyGyro-std()-Z", "fBodyAccMag-mean()", 
  "fBodyAccMag-std()", "fBodyBodyAccJerkMag-mean()", "fBodyBodyAccJerkMag-std()", 
  "fBodyBodyGyroMag-mean()", "fBodyBodyGyroMag-std()", "fBodyBodyGyroJerkMag-mean()", 
  "fBodyBodyGyroJerkMag-std()")

l_name_patterns <- c("^t{1}","^f{1}","BodyBody","Body","Acc", 
    "Gravity","Gyro", "Mag", "Jerk")
l_repl_patterns <- c("Time ", "Frequency ","Body","Body ","Accelerator ", 
    "Gravity ", "Gyroscope ","Magnitude ", "Jerk ")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:用 sub 替换多个正则表达式 的相关文章

随机推荐

  • 如何在 iis 服务器上启用 mod_rewrite

    我发现我的服务器上没有启用 mod rewrite 功能 SERVER SERVER SOFTWARE Microsoft IIS 7 0 架构 x86 我如何启用 mod rewrite 有人可以帮助我吗 对我有用的答案是安装微软 URL
  • 在 MKMapView 中设置当前位置图标下侧

    我想在地图下方显示我当前的位置 iOS 6 和 iOS 7 如下面的屏幕截图所示 用户可以看到进一步的视图 带有谷歌地图的谷歌默认应用程序 Right now the cursor that shows center in the view
  • 当服务器处于Unix套接字时如何连接到数据库?

    我与数据库 phpmyadmin 的连接有问题 这只是因为我的服务器位于 UNIX 套接字中 我不知道如何连接到它 我站在窗户上 如果我的服务器采用 TCP IP 下面的代码可以正常工作 My code
  • JQuery:ajax 请求时出现“未捕获类型错误:非法调用”

    我正在使用这个 AJAX 函数将我的表单发布到特定的 URL 它正在获取所需的 URL 并进行处理 但是当它返回结果时 它会给出错误
  • 如何避免实体框架 4.3.1 中的重复插入

    我有一个使用代码优先方法创建的小模型 一个类City其中仅包含有关城市名称的信息 public class City public City Posts new List
  • 将 System.Drawing.Icon 转换为 Microsoft.UI.Xaml.ImageSource

    存在将 System Drawing Icon 转换为 System Media ImageSource 将 System Drawing Icon 转换为 System Media ImageSource 但是当我使用WinUI而不是WP
  • 将 InkCanvas 笔画转换为字节数组并再次转换回来

    我正在开发一个程序 它将 inkcanvas 笔划转换为字节数组进行加密 然后将其保存在 txt 文件中 本质上我需要将字节数组转换为 inkcanvas 笔划 我已经完成了代码的前半部分 它将 inkcanvas 笔划转换为字节数组 pr
  • Fluent NHibernate 将一列映射到两列之一

    我正在处理一些无法修改的旧供应商代码 我想用一个更易于使用的抽象层来包装数据库 给定以下两个表 我需要为 Process Route 创建一个映射 它将找到给定进程的匹配路由 但可以是 dbo Route SourceProcessID 或
  • iOS 5 中拖动 UIView

    我在 iPhone 应用程序中看到状态栏上有一个可以访问通知中心的手势 我如何在我的应用程序中实现这种转换 我认为这是通过滑动手势识别器完成的 但是如何包含从上到下的滑动手势 如何拖动通知中心完成其完整过渡 有任何示例代码或其他东西可以帮助
  • 使用字符数组作为字符串流缓冲区

    我正在寻找一种干净的 STL 方法来使用现有的 C 缓冲区 char 和 size t 作为字符串流 我更喜欢使用 STL 类作为基础 因为它具有内置的保护措施和错误处理 注意 我不能使用额外的库 否则我会使用文本流 你可以尝试使用std
  • django ALLOWED_HOSTS 不工作

    我的 settings py 文件包含 DEBUG False ALLOWED HOSTS u mydomainxxx com 但是 我可以像这样触发卷曲请求 curl X GET https mydomainxxx com api H A
  • PermissionError: [Errno 13] 权限被拒绝: '/code/manage.py'

    我试图在 docker 容器上运行 django 应用程序 按照以下提到的步骤操作https docs docker com compose django 但运行命令后docker compose run web django admin
  • 为什么这个 for 循环不处理完整的数据集?

    背景 我有一个活动门票分配的电子表格 电子表格的每一行都有一个名称和分配的票数 我需要更改电子表格 以便每个票证的每个名称在不同的行上重复一次 如下所示 我有一个宏可以做到这一点 但它表现出奇怪的行为 问题 该宏不会循环遍历整个数据集 单步
  • 强制 React-Router 加载页面,即使我们已经在该页面上

    有没有办法强制React Router从路径加载页面 即使当前位置已经是该页面 我似乎在反应路由器文档中找不到任何提及这一点的信息 我们在 申请 路线上有一个页面 该页面加载带有英雄图像 一些解释性文本等的登陆页面 以及一个 申请此计划 按
  • 自定义复选框首选项

    我无法自定义我的复选框 尽管我已经在 xml 首选项文件中定义了背景 但它不会提取该文件 1 我试图显示复选框的自定义图像 并将选择器 xml 定义为 android button xml 如下所示
  • JavaScript setInterval 和 this 解决方案

    我需要访问this从我的setInterval handler prefs null startup function init prefs this retrieve rate this intervalID setInterval th
  • pymysql callproc() 似乎影响后续选择

    我正在尝试将代码库从使用 MySQLdb 转换为 pymysql 我遇到了以下问题 想知道是否有人见过类似的问题 简而言之 如果我通过 pymysql 游标 callproc 方法调用存储过程 则使用相同或不同游标通过execute 方法进
  • 无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型

    我有一堂这样的课 public class MyStok public int STId get set public int SM get set public string CA get set public string Br get
  • Flutter Widgets 绑定观察者

    在 Flutter 中 我想返回到我离开应用程序的页面 但当我尝试返回时 它总是导航到登录页面 例如 我有 3 个页面 登录页面 锻炼页面 进度页面 登录页面是我的启动器 当我进入 ProgressPage 时 我离开了应用程序 但是当我恢
  • R:用 sub 替换多个正则表达式

    我有一个包含以下值的字符向量 1 tBodyAcc mean X tBodyAcc mean Y tBodyAcc mean Z tBodyAcc std X 5 tBodyAcc std Y tBodyAcc std Z tGravity