使用部分原始文件名导出R中的文件

时间:2017-07-18 16:07:20

标签: r regex csv

我希望使用原始文件名的一部分从操作数据框中编写csv。我想在下划线之前提取所有内容,所以在这种情况下,只需要96.没有别的。有些文件包含3个数字,有些是2,但都在下划线之前。

file <- "96_2016-01-01~2016-08-08.xlsx"
x <- read.table(file, as.is=T)

#extracting csv using full file name, but want to just use 96
write.csv <- (x$All, paste(file,".csv"), row.names=FALSE)

当前文件名:96_2016-01-01~2016-08-08.xlsx.csv

所需文件名:96.csv

有没有办法使用正则表达式或gsub?谢谢。

1 个答案:

答案 0 :(得分:3)

我们可以使用sub来匹配_后跟其他字符(.*),并将其替换为.csv

sub("_.*", ".csv", file)
#[1] "96.csv"

如果我们需要更具体,请在字符串的开头(\\d+)匹配一个或多个数字(^),将其捕获为一个组((...)),然后_和其他字符(.*),替换为所捕获组的反向引用(\\1),后跟.csv

sub("^(\\d+)_.*", "\\1.csv", file)
#[1] "96.csv"