如何在 R 中使用 str_pad 改变变量

How to mutate a variable using str_pad in R

我想获取 df$y "01", "02", "03", "40h" 的结果,但我无法理解我的错误:

    library(tidyverse)
    df <- tibble(x = c(1,2,3,4),
                 y = c("1","2","03","40h"))
    df %>%
      mutate(y = if_else(length(y) < 2, str_pad(width=2, pad="0"), y))
    #> Error: Problem with `mutate()` input `y`.
    #> x argument "string" is missing, with no default
    #> i Input `y` is `if_else(length(y) < 2, str_pad(width = 2, pad = "0"), y)`.
    Created on 2020-10-20 by the reprex package (v0.3.0)

您遇到了三个问题。您需要摆脱 length(y) <2length 函数 returns 向量中的元素数,而不是字符串中的字符数。如果您绝对想检查字符数,请使用 nchar().

其次,不需要获取字符数。 str_padwidth 参数设置输出中预期的字符数。如果输入元素的字符数已经等于或大于width,则不变。

最后,str_pad的用法是:

str_pad(string, width, side = c("left", "right", "both"), pad = " ")

第一个预期参数是字符串。如果你不把 string 放在第一位,它就不知道去哪里找。在对 str_pad 的调用之外还有 y。要么将 y 作为第一个参数,要么在 str_pad.

中指定 string = y
 df %>%
   mutate(y = str_pad(string = y, width = 2, pad = "0")
# A tibble: 4 x 2
      x y    
  <dbl> <chr>
1     1 01   
2     2 02   
3     3 03   
4     4 40h