如何将函数应用于 R 中的数据帧列表?

How can I apply a function to a list of dataframes in R?

我正在尝试绑定许多数据帧。它们都具有相同的列数和相同的列名。 但是,bind_rows 将不起作用,因为某些数据框将特定列存储为日期,而另一些则存储为字符。如何在所有数据框中应用将日期转换为字符或反之亦然的函数?更好的是,如果我转换所有数据框中的所有日期列。 这是我正在尝试做的一些虚拟代码:

    library(tidyverse)

employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))

startdate.2<-c('2010-11-1','2008-3-25','2007-3-14')


df1<-data.frame(employee,salary, startdate)
df2<-data.frame(employee,salary, startdate.2) %>% rename(startdate=startdate.2)

df3<-bind_rows(df1,df2)

错误:无法合并 ..1$startdate..2$startdate

感谢您的帮助!

以下是使用 purrr

将所有日期列转换为字符列的方法
list(df1, df2) %>% 
  map(~mutate(.x, across(where(lubridate::is.Date), as.character))) %>% 
  bind_rows()

或者如果您想将名称中带有“日期”的所有列转换为日期值,您可以这样做

list(df1, df2) %>% 
  map(~mutate(.x, across(contains("date"), as.Date))) %>% 
  bind_rows()