删除数字后的括号,保留数字

标签 r gsub

我需要删除字符串中数字后的括号:

 "dl_CONH_r = a0cons+a2cons*(CONH_r_lag_1)-a3cons*HGDI_r_lag_1)-(1-a3cons)*HNW_r_lag_2)+a4cons*rate_90_r_lag_1))+a5cons*dl_HCOE_r+a6cons*dl_HOY_r_lag_2)+a7cons*dl_HNW_r_lag_1)+a8cons*d_rate_UNE_lag_2)+(1-a5cons-a6cons-a7cons)*(dl_TREND_PROD+dl_TREND_AVEH+dl_TREND_WAP)"

生成的字符串应该如下所示:

 "dl_CONH_r = a0cons+a2cons*(CONH_r_lag_1-a3cons*HGDI_r_lag_1-(1-a3cons)*HNW_r_lag_2+a4cons*rate_90_r_lag_1)+a5cons*dl_HCOE_r+a6cons*dl_HOY_r_lag_2+a7cons*dl_HNW_r_lag_1+a8cons*d_rate_UNE_lag_2+(1-a5cons-a6cons-a7cons)*(dl_TREND_PROD+dl_TREND_AVEH+dl_TREND_WAP)"

我在这里 try catch 的正则表达式是字符串“lag_”后跟一些数字后的第一个括号。请注意,在某些地方有两个括号:

 rate_90_r_lag_1))

我只想删除第一个。

我已经在 gsub 中尝试了一个简单的正则表达式

 a <-  "dl_CONH_r = a0cons+a2cons*(CONH_r_lag_1)-a3cons*HGDI_r_lag_1)-(1-a3cons)*HNW_r_lag_2)+a4cons*rate_90_r_lag_1))+a5cons*dl_HCOE_r+a6cons*dl_HOY_r_lag_2)+a7cons*dl_HNW_r_lag_1)+a8cons*d_rate_UNE_lag_2)+(1-a5cons-a6cons-a7cons)*(dl_TREND_PROD+dl_TREND_AVEH+dl_TREND_WAP)"

gsub("[0-9]\\)","[0-9]",a)

但我生成的字符串删除了数字并将其替换为 [0-9]:

 "dl_CONH_r = a0cons+a2cons*(CONH_r_lag_[0-9]-a3cons*HGDI_r_lag_[0-9]-(1-a3cons)*HNW_r_lag_[0-9]+a4cons*rate_90_r_lag_[0-9])+a5cons*dl_HCOE_r+a6cons*dl_HOY_r_lag_[0-9]+a7cons*dl_HNW_r_lag_[0-9]+a8cons*d_rate_UNE_lag_[0-9]+(1-a5cons-a6cons-a7cons)*(dl_TREND_PROD+dl_TREND_AVEH+dl_TREND_WAP)"

我知道 gsub 正在做它打算做的事情。我不知道的是如何保留括号前的数字?

最佳答案

您需要使用环视(在本例中为 preceeded by),以便它只匹配括号作为匹配组,而不是数字和括号。然后你可以删除括号。

gsub("(?<=[0-9])\\)","", a, perl = TRUE)

关于删除数字后的括号,保留数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57830694/

相关文章:

r - 在数据框 R 中动态创建列并根据其他列条件进行填充

r - fwrite.data.table 和 `yyyy-mm-dd hh:mm:ss` 格式优化,具有固定的 UTC 偏移量

r - R 中的子字符串和 gsub

ruby - 如何使用 'gsub' 进行多次替换?

r - 如何根据R中的条件拆分字符串?

R中data.table中的行索引

使用 readLines 读取困惑的 csv 直到某个行/单元格值

r - 如何在 R 中使用 igraph 删除小社区?

从字符串中删除括号

ruby - Rails 3 和 html_safe 混淆(聊天中允许图片(微笑)但拒绝其他一切)