首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的正则表达式:如何一次使用sub()多个列值?

R中的正则表达式:如何一次使用sub()多个列值?
EN

Stack Overflow用户
提问于 2020-04-04 00:31:16
回答 2查看 142关注 0票数 0

我试着让下面的脚本更简洁。

代码语言:javascript
复制
SH1$SCORING7_01 = sub("-", "", SH1$SCORING7_01)    
SH1$SCORING7_02 = sub("-", "", SH1$SCORING7_02)    
SH1$SCORING7_03 = sub("-", "", SH1$SCORING7_03)    
SH1$SCORING7_04 = sub("-", "", SH1$SCORING7_04)    
SH1$SCORING7_05 = sub("-", "", SH1$SCORING7_05)    

本质上,我只是从每一列的值中删除一个'-‘。(这是一个更大的过程的一部分。)有没有一种方法可以同时从所有五列的值中减去'-‘?这些特定的“SCORING_XX”列的数量实际上上升到38列,并且在未来可能会增加。因此,涉及列范围的内容就更好了(例如: SCORING7_01:SCORING7_XX)。

我在Windows上运行"R版本3.6.2 (2019-12-12)“

EN

回答 2

Stack Overflow用户

发布于 2020-04-04 00:38:39

这是一个基本的R选项:

代码语言:javascript
复制
names <- c("SCORING7_01", "SCORING7_02", "SCORING7_03", "SCORING7_04", "SCORING7_05")
SH1[names] <- lapply(SH1[names], function(x) sub("-", "", x, fixed=TRUE))

注意,我在上面对sub的调用中使用了fixed=TRUE选项,因为您的替换逻辑实际上并不涉及任何正则表达式。

票数 0
EN

Stack Overflow用户

发布于 2020-04-04 00:39:35

data.table

对于data.table,您可以使用.SDlapply

代码语言:javascript
复制
dt <- data.table(df)
dt[,lapply(.SD, function(x) sub("-","",x)), .SDcols = paste0("SCORING7_0",1:5)] 

基数R

您还可以使用基本R解决方案

代码语言:javascript
复制
df[,paste0("SCORING7_0",1:5)] <- lapply(paste0("SCORING7_0",1:7), function(var) sub("-","",df[,var]))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61016386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档