如何在 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) <2
。 length
函数 returns 向量中的元素数,而不是字符串中的字符数。如果您绝对想检查字符数,请使用 nchar()
.
其次,不需要获取字符数。 str_pad
的 width
参数设置输出中预期的字符数。如果输入元素的字符数已经等于或大于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
我想获取 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) <2
。 length
函数 returns 向量中的元素数,而不是字符串中的字符数。如果您绝对想检查字符数,请使用 nchar()
.
其次,不需要获取字符数。 str_pad
的 width
参数设置输出中预期的字符数。如果输入元素的字符数已经等于或大于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