我对R有点陌生,并且编写了以下嵌套循环:
for (col in date2) {
for (row in 1:nrow(file2)) {
file2[row, col] <- as.character(parse_date_time(file2[row, col], c("Ymd", "mdY", "mdy", "ymd",
"mdy_HM", "mdy_H", "mdy_HMS",
"ymd_HM", "ymd_H", "ymd_HMS")))
}
}
我注意到代码现在运行的速度大大降低,这可能是因为R并未针对快速运行嵌套循环进行优化。有没有一种方法可以使用sapply
进行重构?我已经尝试过这样做,但是到目前为止,让它按预期运行一直没有运气。
答案 0 :(得分:0)
如果我们具有行索引和列索引,请cbind
提取出“ file2”的元素
library(lubridate)
ij <- cbind(seq_len(nrow(file2)), seq_along(date2))
parse_date_time(file2[ij], fmtVec)
如果打算将其应用于多个列
library(dplyr)
file2 %>%
mutate_at(vars(date2), parse_date_time, select_formats = fmtVec)
或使用lapply
中的base R
file2[date2] <- lapply(file2[date2], parse_date_time, select_formats = fmtVec)
fmtVec <- c("Ymd", "mdY", "mdy", "ymd", "mdy_HM", "mdy_H", "mdy_HMS",
"ymd_HM", "ymd_H", "ymd_HMS")