如何解决如何创建将函数应用于数据集中多个列的R函数?
这是一个示例数据集:
library(tidyverse)
library(lubridate)
db_country <- tibble(country = c("Argentina","Australia","Austria"),region = c("Americas","Asia","Europe"),start_date = as.numeric(18487,18487,18487),end_date = as.numeric(18500,18500,18500))
# A tibble: 3 x 4
country region start_date end_date
<chr> <chr> <dbl> <dbl>
1 Argentina Americas 18487 18500
2 Australia Asia 18487 18500
3 Austria Europe 18487 18500
我正在尝试创建一个将列中的所有值转换为日期格式的函数。这是我到目前为止所拥有的:
mydate <- function(dataset,column) {
dataset %>% mutate({{column}} := as_date({{column}}))
我希望能够为我输入的“ column”参数输入多个列名。我希望能够像这样写一些类似的东西,然后使用一行代码将函数应用到多个列上,而不是对mydate()
和start_date
使用我的end_date
函数两次:有点像select()
函数)
mydate(db_country,start_date,end_date)
我该如何编辑我的功能?
非常感谢您的帮助:)
解决方法
您可以这样做:
mydate <- function(dataset,...)
{
mutate(dataset,across(as.character(ensyms(...)),as_date))
}
其中允许以下管道友好语法:
db_country %>% mydate(start_date,end_date)
#> # A tibble: 3 x 4
#> country region start_date end_date
#> <chr> <chr> <date> <date>
#> 1 Argentina Americas 2020-08-13 2020-08-26
#> 2 Australia Asia 2020-08-13 2020-08-26
#> 3 Austria Europe 2020-08-13 2020-08-26
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。