2016-07-26 78 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 ::'%'將起作用,將庫調用放在包含函數定義的任何腳本的頂部。 –

相關問題