【问题标题】:R Error trying to use as.Date in a %>%R 尝试在 %>% 中使用 as.Date 时出错
【发布时间】:2017-06-30 15:51:08
【问题描述】:

我最近了解了管道操作员 %>%,我正在尝试将其融入我一直在从事的一些项目中。但是当我尝试在管道中使用 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 很可能不是您在管道中使用的命令。

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

【问题讨论】:

    标签: r piping magrittr as.date


    【解决方案1】:

    我认为您必须向管道运算符添加 mutate。但是,我不知道在这种情况下管道操作符是否比简单的df$dates &lt;- 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"))
    

    【讨论】:

    • 成功了,谢谢!你是对的,管道操作员在这个例子中并没有更好。不过,我正在进行的项目,我使用的不仅仅是管道中的 as.Date。
    【解决方案2】:

    在这种情况下,您想使用%$% 运算符,让您可以直接访问列:

    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"))
    

    【讨论】:

      猜你喜欢
      • 2020-01-01
      • 2017-03-01
      • 2021-12-30
      • 2012-02-19
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      相关资源
      最近更新 更多