【问题标题】:Make all elemants of a character vector the same length使字符向量的所有元素长度相同
【发布时间】: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。但是,我需要使用字符向量。

【问题讨论】:

    标签: r string


    【解决方案1】:

    我们可以使用base R 函数在字符串末尾填充 0 以使字符数相等。 formatwidth 指定为 ncharmaxvector (字符数)在末尾提供带有尾随空格的输出(如 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" 部分吗?
    • @llya 表示一个空格。你可以阅读更多关于?regex
    猜你喜欢
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多