R - gsub特定位置的特定字符

时间:2015-05-10 12:24:04

标签: regex r position gsub

我想删除变量的最后一个字符。 我想知道是否可以用gsub选择位置并删除该特定位置的角色。

在这个例子中,我希望在E之后删除最后一个数字,用于我的4个变量。

variables = c('B10243E1', 'B10243E2', 'B10243E3', 'B10243E4')
gsub(pattern = '[[:xdigit:]]{8}.', replacement = '', x = variables)

我以为我们可以使用命令

{}

以选择特定位置。

4 个答案:

答案 0 :(得分:2)

你可以通过捕捉除最后一个角色之外的所有角色来实现:

variables = c('B10243E1', 'B10243E2', 'B10243E3', 'B10243E4')
gsub('^(.*).$', '\\1', variables)

说明:

  • ^ - 字符串的开头
  • (.*) - 所有字符,但换行符
  • .$ - 在字符串结尾(.)之前的最后一个字符(使用$捕获)。

因此,如果您计划删除 final 字符,并且该字符串不包含换行符,则可以使用此正则表达式。

请参阅demo

输出:

[1] "B10243E" "B10243E" "B10243E" "B10243E"  

仅替换第8个字符(这是我在每个项目末尾添加T的示例):

variables = c('B10247E1T', 'B10243E2T', 'B10243E3T', 'B10243E4T')
gsub('^(.{7}).', '\\1', variables)

sample program的输出(每个项目末尾不是ET,数字已移除):

[1] "B10247ET" "B10243ET" "B10243ET" "B10243ET" 

答案 1 :(得分:1)

如果您始终希望在E之后删除,则可以捕获其后的所有内容并替换为E

sub("E(.*)", 'E', variables)
## [1] "B10243E" "B10243E" "B10243E" "B10243E"

或者,您可以使用正面观察计算7个字符,并在

之后删除所有内容
sub("(?<=.{7})(.)", "", variables, perl = TRUE)
## [1] "B10243E" "B10243E" "B10243E" "B10243E"

答案 2 :(得分:0)

library(stringr)
str_sub("your String", 1, -2)

可能比其他的慢,但更容易阅读。

答案 3 :(得分:0)

您也可以使用 library(imputeTS) hw3 <- na_locf(hw3) hw3 包中的 library(imputeTS) hw3$VISUAL52 <- na_locf(hw3$VISUAL52) hw3

std::function<int(int)> f =  [](int x) { return x + 1; }; QFuture<int> f2 = QtConcurrent::mapped(v, f);

输出:

str_sub