R - 有条件地重命名向量元素

问题描述 投票:0回答:1

假设我有一个文件名列表。每个文件名将以今天的日期或昨天的日期结尾。 (假设今天是 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的向量运算来做到这一点?谢谢!

r vector
1个回答
0
投票
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" 
© www.soinside.com 2019 - 2024. All rights reserved.