假设我有一个文件名列表。每个文件名将以今天的日期或昨天的日期结尾。 (假设今天是 6/18/2024,那么昨天是 6/17/2024。)如果我将它们放入字符向量中,它可能看起来像这样:
fileNames <- c("Accounts-20240617.csv", "Advisors-20240617.csv", "Customer Names-20240618.csv",
"Sales-20240617.csv", "Transactions-20240618.csv", "Users-20240617.csv")
我需要在任何具有今天日期的文件名的开头附加一个“t-”,并在任何具有昨天日期的文件名的开头附加一个“y-”,因此输出将如下所示:
modifiedFileNames <- c("y-Accounts-20240617.csv", "y-Advisors-20240617.csv", "t-Customer Names-20240618.csv",
"y-Sales-20240617.csv", "t-Transactions-20240618.csv", "y-Users-20240617.csv")
我可以通过编写
for
循环并迭代 fileNames
来做到这一点。有没有办法纯粹使用R的向量运算来做到这一点?谢谢!
fileNames_dates <- lubridate::ymd(fileNames)
today = lubridate::ymd(20240618) # or Sys.Date() but only today
fileNames <- paste0(dplyr::case_when(
fileNames_dates == today ~ "t-",
fileNames_dates == today-1 ~ "y-",
TRUE ~ ""), fileNames)
结果
[1] "y-Accounts-20240617.csv" "y-Advisors-20240617.csv"
[3] "t-Customer Names-20240618.csv" "y-Sales-20240617.csv"
[5] "t-Transactions-20240618.csv" "y-Users-20240617.csv"