如何通过循环按列名对数据框列应用日期解析函数?
批量处理日期列的循环代码修正
原循环代码存在两个关键问题:
- 使用
wgs_db$i无法动态引用循环变量对应的列,R会将i识别为字面量列名而非循环中的变量值 parse_date_time函数的参数之间缺少逗号,属于语法错误
修正后的循环代码如下:
date_cols <- c("IsolatDate", "ReceivedDate", "DNA_Extraction_Date", "Sequencing_Date") for (i in date_cols){ wgs_db[[i]] <- parse_date_time(wgs_db[[i]], c("ymd", "mdy")) }
补充:更简洁的非循环实现方式
如果不想用循环,也可以用lapply实现向量化处理,代码更紧凑:
wgs_db[date_cols] <- lapply(wgs_db[date_cols], parse_date_time, orders = c("ymd", "mdy"))
若使用tidyverse工具链,还可以用dplyr的across函数:
library(dplyr) library(lubridate) wgs_db <- wgs_db %>% mutate(across(all_of(date_cols), ~parse_date_time(., c("ymd", "mdy"))))
内容的提问来源于stack exchange,提问作者Greg Deiulio
相关产品推荐
相关产品推荐

