2016-08-04 231 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