从函数内部的时期润滑对象

时间:2019-06-25 18:37:15

标签: r lubridate

我发现此有用的函数here用于计算年龄(或仅计算两个日期之间的时间):

calc_age <- function(birthDate, refDate = Sys.Date()) {


    period <- as.period(new_interval(birthDate, refDate),
                        unit = "year")

    period$year

}

我想通过使unit作为函数的参数来改进它,以便我们可以以月,天或period对象支持的单位为单位来获得年龄。

我尝试过这样的事情:

calc_age <- function(birthDate, refDate = Sys.Date(), unit = 'year') {


    period <- as.period(new_interval(birthDate, refDate),
                        unit = unit)

    period$unit

}

但是我收到此错误消息:

Error in slot(x, name) : no slot of name "unit" for this object of class "Period"

我认为问题与评估有关,因此我尝试使用enquoquotext进行了一些尝试,但是由于我对函数式编程非常陌生,因此无法使其正常工作。

感谢您的帮助,对英语不好表示抱歉。

1 个答案:

答案 0 :(得分:0)

对问题链接中的代码的修改不是很大。

calc_age2 <- function(birthDate, refDate = Sys.Date(), unit = "year"){
  int <- interval(birthDate, refDate)
  period <- as.period(int, unit = unit)
  slot(period, unit)
}

unix的正式年龄是多少?

calc_age2("1970-01-01")
#[1] 49
calc_age2("1970-01-01", unit = "month")
#[1] 593