通过提取文件名和扩展名的第一部分重命名文件夹中的文件(R编程)

通过提取文件名和扩展名的第一部分重命名文件夹中的文件(R编程),r,R,我有数百个包含雅虎财经API数据的文件 它们的名称如下所示: R> print(list.files()) [1] "A_yahoo_2017-10-14_2018-10-14.csv" [2] "AAL_yahoo_2017-10-14_2018-10-14.csv" [3] "AAP_yahoo_2017-10-14_2018-10-14.csv" 我想删除股票代码(符号)后面的名称并保留分机 例如: [2] "AAL_yahoo_2017-10-14_2018-10

我有数百个包含雅虎财经API数据的文件

它们的名称如下所示:

R> print(list.files())
  [1] "A_yahoo_2017-10-14_2018-10-14.csv"
  [2] "AAL_yahoo_2017-10-14_2018-10-14.csv"
  [3] "AAP_yahoo_2017-10-14_2018-10-14.csv"  
我想删除股票代码(符号)后面的名称并保留分机

例如:

[2] "AAL_yahoo_2017-10-14_2018-10-14.csv"
变成

[2] "AAL.csv"
我决定删除扩展名,拆分文件的整个名称,使用代码并再次添加扩展名(我知道这很无聊)。比如说:

library(tools)
oldnames = list.files()
oldnames = tools::file_path_sans_ext(oldnames)
oldnames = strsplit(oldnames, "_")
这将产生类似的结果(示例)

如你所见,股票行情在[1]。我不确定下一步如何继续重命名文件夹中的整个文件,或者是否有更省钱的方法进行重命名。

设置测试用例
fn
print(oldnames)
.
.
[[173]]
[1] "EXC"        "yahoo"      "2017-10-14" "2018-10-14"
.
.
fn <- c("A_yahoo_2017-10-14_2018-10-14.csv"
, "AAL_yahoo_2017-10-14_2018-10-14.csv"
, "AAP_yahoo_2017-10-14_2018-10-14.csv")  
firstpart <- sapply(strsplit(fn,"_"), "[[",1)
mapply(file.rename, from=fn, to=paste0(firstpart, ".csv"))