2017-07-18 33 views
2

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

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?谢谢。

回答

3

我们可以使用sub匹配_其次是其他字符(.*),并与.csv

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

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

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

完美。这很快,正是我想要的。一旦堆栈溢出让我接受答案! – kslayerr

+0

Full code = write.csv(x $ All,paste(sub(“_。*”,“.csv”,file)),row.names = F) – kslayerr

相关问题