2016-08-04 235 views
1

正如標題所說:爲什麼沒有這樣的功能?或者以不同的方式:函數的類型是什麼?當我輸入?update時,我從stats包中得到了一些東西,但第7頁上有here所述的潤溼功能。似乎還有lubridate:::update.Date函數,但我找不到該函數的任何解釋。爲什麼沒有lubridate :::更新功能?

Backround:我在包中使用該函數,並且在我使用描述文件中的Depends:之後我才使用它。起初,我想用lubridate::update() ...

回答

1

lubridate包提供了方法lubridate:::update.Date()lubridate:::update.POSIXt()。這些函數不會被導出到命名空間中,但是我假設通過函數重載,當加載血管庫時,將update()應用於POSIXDate對象時調用它們。

幫助頁面?lubridate:::update.POSIXt提供了有關lubridate包內update功能的一些信息:

說明

update.Date和update.POSIXt返回一個日期與指定 元素更新。未指定的元素將保持不變。 update.Date和update.POSIXt不會將指定的值添加到 現有日期,它們會將它們替換爲 現有日期的適當部分。

用法

## S3類 'POSIXt'

更新(對象,...,簡單= FALSE)

的使用部分和在實施例中的方法幫助頁面指示這些函數不需要單獨解決,因爲在加載lubridate庫時,只需使用update()即可調用這些函數。

檢查這些功能可以在控制檯中輸入,例如lubridate:::update.POSIXt(無需傳遞參數,也沒有括號)。

+0

所以包含通過DESCRIPTION文件和'依賴'在我的軟件包lubridate是好的?之後我可以使用'update(...)'這就是你應該使用函數的方式嗎?爲什麼我總是得到參考'stats :: update'並且沒有任何來自base的東西? – Christoph

+0

我沒有開發R包的經驗,所以我不知道包含在DESCRIPTION文件中是否足夠。如果你特別想調用這些函數,可以用'lubridate ::: update.POSIXt()'來處理它們。 'stats'包是R中標準分發的一部分,所以它通常被稱爲「基本」庫,雖然有一個單獨的核心庫叫做'base'。可以認爲'stats :: update()'是可用的。如果看起來像lubridate,利用函數重載/ ad hoc多態性,'stats :: update()'應該足夠庫(lubridate)後, – RHertel

0

您需要加載lubridate包:

library(lubridate) 
date <- now() 
print(date) 
new_date <- update(date, year = 2010, month = 1, day = 1) 
print(new_date) 

輸出:

「2016年8月4日8時58分08秒CEST」

「2010-01-01 08:58:08 CET」

+0

但是它是什麼類型的功能?爲什麼沒有'lubridate ::: update'函數?我會讓問題更加精確...... – Christoph

+1

搜索「函數重載」並研究R中的S3 OO類systen。與許多函數(例如'seq')一樣,特定於第一個參數模式的代碼的詳細信息被掩蓋了。你不必爲一系列日期運行'seq.Date',或者'seq.default'爲數字'seq'理解輸入併爲你運行合適的代碼。 – NJBurgo