2016-07-26 45 views
0

我想编写一个将日期作为输入参数的函数,输出将是日,月,周和周年。我的示例代码显示了一些错误。请在这方面帮助我 ,谢谢。在R中输入日期作为输入函数

我的示例代码如下:

 myFunction <- function(date){ 
     date <-as.numeric(as.Date(date, format = "%m/%d/%Y",origin = "1899-12-30")) 
     date$month<- strftime(date,"%m") 
     date$day<- strftime(date,"%d") 
     data$week<-strftime(date,"%w") 
     date$week_year<-strftime(date,"%W") 
     return(date$day,date$month,date$week,date$week_year) 
     } 

当我打电话功能,它显示错误:

 myFunction(2016-07-26) 
Error in as.POSIXlt.numeric(x, tz = tz) : 'origin' must be supplied 
+1

您的格式(年第一,昨天的约会)不匹配“格式”的说法,但如果它没有那么使用'myFunction的(“2016年7月26日”)'可能成功。请阅读'?strptime'并运行示例。 –

回答

1

你输入一个字符串。使用lubridate你可以写

myFunction <- function(date){ 
    library(lubridate) 
    t0 <- ymd(date) 
    return(list(day(t0), month(t0), week(t0), wday(t0, label=F, abbr=F), year(t0))) 
    } 
+1

我会避免在函数定义中调用'library(...)'。 –

+0

@AlexIoannides:我只是把它作为一个独立的例子来运行。但我同意 - 我会尽量避免这种情况,尽管并不总是可能的(例如,如果您使用lubridate'%within%')。 – Christoph

+1

'%%(a,b)\''中的'lubridate ::'%'将起作用,将库调用放在包含函数定义的任何脚本的顶部。 –

相关问题