我想删除变量的最后一个字符。
我想知道是否可以用gsub
选择位置并删除该特定位置的角色。
在这个例子中,我希望在E
之后删除最后一个数字,用于我的4个变量。
variables = c('B10243E1', 'B10243E2', 'B10243E3', 'B10243E4')
gsub(pattern = '[[:xdigit:]]{8}.', replacement = '', x = variables)
我以为我们可以使用命令
{}
以选择特定位置。
答案 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