我希望使用原始文件名的一部分从操作数据框中编写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?谢谢。
答案 0 :(得分:3)
我们可以使用sub
来匹配_
后跟其他字符(.*
),并将其替换为.csv
sub("_.*", ".csv", file)
#[1] "96.csv"
如果我们需要更具体,请在字符串的开头(\\d+
)匹配一个或多个数字(^
),将其捕获为一个组((...)
),然后_
和其他字符(.*
),替换为所捕获组的反向引用(\\1
),后跟.csv
sub("^(\\d+)_.*", "\\1.csv", file)
#[1] "96.csv"