我有一个字符串向量,每个字符串应该有8个字母数字字符.它们可能在字符串中包含一个或多个空格within,而不是右或左.

对于那些少于8个字符的字符串,我想填充现有的空格,以便最终所有字符串都有8个字符.间距/填料应保持在within mm.(背景:这与英国邮政编码有关)

我的方法很复杂,可能有缺陷,下面是一个示例向量和期望输出.

## x can take any alphanumeric value
x <- c("xxx xxx", "xx xxx", "x  xxx", "xxx  xxx", "xx   xxx", "xxxxxxxx")

## missing number of spaces
s_miss <- 8 - nchar(x)
## numbers of spaces
s_pres <- stringr::str_count(x, "\\s")

## now here is a convoluted function
## if a space is found, the missing spaces will be added to the already present spaces
padded <- sapply(1: length(x), function(i){
    gsub("\\s+", paste(rep(" ", s_pres[i] + s_miss[i]), collapse = ""), x[i])})

## desired output 
padded
#> [1] "xxx  xxx" "xx   xxx" "x    xxx" "xxx  xxx" "xx   xxx" "xxxxxxxx"
nchar(padded)
#> [1] 8 8 8 8 8 8

推荐答案

regmatches(x, regexpr(' ', x)) <- strrep(' ', 9 - nchar(x))
x
[1] "xxx  xxx" "xx   xxx" "x    xxx" "xxx  xxx" "xx   xxx" "xxxxxxxx"

甚至:

 stringr::str_replace(x, ' ', strrep(' ', 9 - nchar(x)))

R相关问答推荐

指定要保留在wrap_plots中的传奇

DT::可数据的正规表达OR运算符问题

按崩溃类别分类的指数

在ComplexHeatmap中,如何更改anno_barplot()标题的Angular ?

使用预定值列表将模拟数量(n)替换为rnorm()

按R中的组查找相邻列的行累积和的最大值

如何在modelsummary中重命名统计数据?

计算时间段的ECDF(R)

将饼图插入条形图

如何基于两个条件从一列中提取行

在GG图中绘制射线的自动程序

从非重叠(非滚动)周期中的最新数据向后开窗并在周期内计数

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

将项粘贴到向量中,并将它们分组为x的倍数,用空格分隔

将多个变量组合成宽格式

扩展R中包含列表的数据框

R中时间间隔的大向量与参考时间间隔的相交

在ggploy中创建GeV分布时出错

附加中缀操作符

删除r中每个因素级别的最后2行