从dplyr :: mutate调用用户定义的函数

丹尼尔

我正在一个涉及许多不同小标题的项目中,所有小标题都具有periodYYYYMM格式变量。以下是我所有小标题的示例:

tibble_1 <- tibble::tibble(
    period = c(201901, 201912, 201902, 201903),
    var_1 = rnorm(4),
    var_2 = rnorm(4)
)

但是对于某些操作(即时间序列图),使用实际的Date变量更容易。所以我正在使用mutate将period变量转换为如下所示的日期:

tibble_1 %>% 
  dplyr::mutate(
    date = lubridate::ymd(stringr::str_c(period, "01"))
  )

因为我会做很多事情,并且日期转换不是调用mutate时要做的唯一突变,所以我希望有一个用户定义的函数,可以从mutate调用中调用。这是我的功能:

period_to_date <- function() {
  lubridate::ymd(stringr::str_c(period, "01"))
}

我以后会这样称呼它:

tibble_1 %>% 
  dplyr::mutate(
    date = period_to_date()
  )

问题是,R无法找到周期对象(它实际上不是对象本身,而是小标题的一部分)。

stri_c中的错误(...,sep = sep,崩溃=崩溃,ignore_null = TRUE):找不到对象'period'

我很确定我需要定义一个数据掩码,以便在其中执行period_to_date的环境可以在其父环境中查找对象(该环境应始终是调用方环境,因为包含period变量的小标题并不总是相同),但我似乎无法弄清楚该怎么做。

罗纳克·沙

该函数不知道您要修改哪个对象。period在函数中传递对象,并按如下方式使用它:

period_to_date <- function(period) {
  lubridate::ymd(stringr::str_c(period, "01"))
  #Can also use
  #as.Date(paste0(period,"01"), "%Y%m%d")
}

tibble_1 %>% 
  dplyr::mutate(date = period_to_date(period))

#  period   var_1  var_2 date      
#   <dbl>   <dbl>  <dbl> <date>    
#1 201901 -0.476  -0.456 2019-01-01
#2 201912 -0.645   1.45  2019-12-01
#3 201902 -0.0939 -0.982 2019-02-01
#4 201903  0.410   0.954 2019-03-01

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

dplyr中的R用户定义函数摘要

来自分类Dev

在dplyr mutate_at调用中使用多列函数

来自分类Dev

Julia模块调用用户定义函数

来自分类Dev

调用用户定义的jQuery函数

来自分类Dev

dplyr mutate rowSums计算或自定义函数

来自分类Dev

在dplyr mutate中使用自定义函数?

来自分类Dev

在dplyr mutate中使用自定义函数?

来自分类Dev

在 dplyr 中使用自定义 mutate 函数

来自分类Dev

dplyr :: mutate()的向量化函数

来自分类Dev

dplyr mutate - 如何使用 mutate 正确应用自定义函数?

来自分类Dev

在dplyr mutate调用中添加多列

来自分类Dev

dplyr:Mutate 调用引发深度“评估错误”

来自分类Dev

用户定义函数在dplyr管道中不起作用

来自分类Dev

dplyr汇总用户定义函数的多个输入值

来自分类Dev

在dplyr中使用{{}}调用自定义函数

来自分类Dev

如何从dplyr的R mutate函数调用函数以添加计算列?

来自分类Dev

dplyr mutate中的exp函数返回1

来自分类Dev

dplyr :: mutate_at遍历函数中的列

来自分类Dev

dplyr:在mutate_at函数中访问列名

来自分类Dev

结合dplyr :: do()和dplyr :: mutate吗?

来自分类Dev

mutate()中的Dplyr管道(%>%)?

来自分类Dev

dplyr 评估:select() 与 mutate()

来自分类Dev

使用Rcpp从C ++调用用户定义的R函数

来自分类Dev

Pandas eval-在列上调用用户定义的函数

来自分类Dev

从WPF C#中的For循环调用用户定义的函数

来自分类Dev

使用Rcpp从C ++调用用户定义的R函数

来自分类Dev

调用用户定义的数据库函数

来自分类Dev

在Sqlite的Insert命令中调用用户定义的函数

来自分类Dev

如何在C ++中调用用户定义的函数?