【发布时间】:2016-07-08 07:15:29
【问题描述】:
考虑一个字符向量
test <- c('ab12','cd3','ef','gh03')
我需要 test 的所有元素包含 4 个字符 (nchar(test[i])==4)。如果元素的实际长度小于4,剩余的地方应该用零填充。所以,结果应该是这样的
> 'ab12','cd30','ef00','gh03'
我的问题类似于this one。但是,我需要使用字符向量。
【问题讨论】:
考虑一个字符向量
test <- c('ab12','cd3','ef','gh03')
我需要 test 的所有元素包含 4 个字符 (nchar(test[i])==4)。如果元素的实际长度小于4,剩余的地方应该用零填充。所以,结果应该是这样的
> 'ab12','cd30','ef00','gh03'
我的问题类似于this one。但是,我需要使用字符向量。
【问题讨论】:
我们可以使用base R 函数在字符串末尾填充 0 以使字符数相等。 format 和 width 指定为 nchar 的 max 的 vector (字符数)在末尾提供带有尾随空格的输出(如 format 默认情况下 justify 它到 @987654329 @。然后,我们可以使用gsub将每个空格替换为'0'。gsub中的模式是单个空格(\\s),替换为0。
gsub("\\s", "0", format(test, width=max(nchar(test))))
#[1] "ab12" "cd30" "ef00" "gh03"
或者,如果我们使用的是包解决方案,那么 str_pad 会更容易做到这一点,因为它还具有指定 pad 的参数。
library(stringr)
str_pad(test, max(nchar(test)), side="right", pad="0")
【讨论】:
"\\s" 部分吗?
?regex