R 尝试在 %>% 中使用 as.Date 时出错

R Error trying to use as.Date in a %>%

我最近了解了管道操作员 %>%,我正在尝试将其纳入我一直从事的一些项目中。但是,当我尝试在管道中使用 as.Date 时收到错误消息。

例子

numbers <- c(1, 2, 3, 4, 5)
dates <- c("4/13/2017", "2/20/2017", "3/5/2017", "4/14/2017", "10/22/2017")
df <- data.frame(numbers, dates)
  numbers      dates
1       1  4/13/2017
2       2  2/20/2017
3       3   3/5/2017
4       4  4/14/2017
5       5 10/22/2017

通常我会使用的是:

df$dates <- as.Date(df$dates, "%m/%d/%Y")

尝试在管道中使用它时,我试过:

df %>%
  as.Date(dates, "%m/%d/%Y")

但是收到错误信息:

Error in as.Date.default(., dates, "%m/%d/%Y") : 
  do not know how to convert '.' to class “Date”

我仍然不太熟悉管道运算符,因此 as.Date 很可能不是您在管道中使用的命令。

提前感谢您的任何想法或建议!

我认为您必须向管道运算符添加 mutate。但是,我不知道在这种情况下管道运算符是否比简单的 df$dates <- as.Date(df$dates, "%m/%d/%Y")

更好
library(dplyr)

numbers <- c(1, 2, 3, 4, 5)
dates <- c("4/13/2017", "2/20/2017", "3/5/2017", "4/14/2017", "10/22/2017")
df <- data.frame(numbers, dates)

df %>%
  mutate(dates=as.Date(dates, "%m/%d/%Y"))

在这种情况下,您希望使用 %$% 运算符直接访问列:

df %$% as.Date(dates, "%m/%d/%Y")
# [1] "2017-04-13" "2017-02-20" "2017-03-05" "2017-04-14" "2017-10-22"

它类似于以下使用 with 的语法:

with(df,as.Date(dates, "%m/%d/%Y"))