R:在dplyr::mutate()中求值时,具有不同输出的相同函数

R:在dplyr::mutate()中求值时,具有不同输出的相同函数,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我是新手。现在我遇到了一个问题: 假设我们有字符“2-Jan-01”: 运行函数时,我们得到: as.Date("2-Jan-01", tryFormats = c("%y-%b-%d", "%b-%y-%d")) [1] "2002-01-01" 但是,当我使用命令mutate时: df %>% mutate(birth_date=as.Date(as.character(birth), tryFormats = c("%y-%b-%d", "%b-%y-%d"))) 转换条目2-

我是新手。现在我遇到了一个问题:

假设我们有字符“2-Jan-01”:

运行函数时,我们得到:

as.Date("2-Jan-01", tryFormats = c("%y-%b-%d", "%b-%y-%d"))

[1] "2002-01-01"
但是,当我使用命令mutate时:

df %>%
mutate(birth_date=as.Date(as.character(birth),
tryFormats = c("%y-%b-%d", "%b-%y-%d")))
转换条目
2-Jan-01
时,我得到的是
NA
,而不是
2002-01-01


我不明白为什么同一个函数会在mutate内外对不同的值求值。有人能解释一下吗?提前谢谢你

您的代码对我来说运行良好

librayr(dplyr)

df <- tibble(
  birth = "2-Jan-01"
)
我得到:

  birth    birth_date
  <chr>    <date>    
1 2-Jan-01 2002-01-01
这给出了相同的结果

如果不想保留旧的“birth”列,可以使用
transmute()

df %>%
  transmute(
    birth_date = as.Date(
      birth,
      tryFormats = c("%y-%b-%d", "%b-%y-%d")
    ))
其中:

  birth_date
  <date>    
1 2002-01-01
出生日期
1 2002-01-01

我假设
birth
是一个字符串,等于“2-Jan-01”?这似乎是暗示,但我不知道为什么你需要将其转换为字符。。。您能分享什么
dput(出生)
输出吗?
df %>%
  transmute(
    birth_date = as.Date(
      birth,
      tryFormats = c("%y-%b-%d", "%b-%y-%d")
    ))
  birth_date
  <date>    
1 2002-01-01