使角色矢量的所有元素具有相同的长度

ika*_*sky 6 string r

考虑一个字符向量

test <- c('ab12','cd3','ef','gh03')
Run Code Online (Sandbox Code Playgroud)

我需要test包含4个字符(nchar(test[i])==4)的所有元素.如果元素的实际长度小于4,则剩余的位置应填充零.所以,结果应该是这样的

> 'ab12','cd30','ef00','gh03'
Run Code Online (Sandbox Code Playgroud)

我的问题与类似.但是,我需要使用角色向量.

akr*_*run 9

我们可以使用base R函数在字符串的末尾填充0以获得相等的字符数.将formatwidth指定为maxnchar(字符数)的vector给出了在端部(后空间作为输出format默认justifyright.然后,我们可以用"0"使用替换每个空间gsub.在该模式gsub是一个单一的空间(\\s并且替换是0.

gsub("\\s", "0", format(test, width=max(nchar(test))))
#[1] "ab12" "cd30" "ef00" "gh03"
Run Code Online (Sandbox Code Playgroud)

或者如果我们使用包解决方案,那么str_pad这样做更容易,因为它也有指定的参数pad.

library(stringr)
str_pad(test, max(nchar(test)), side="right", pad="0")
Run Code Online (Sandbox Code Playgroud)