2017-07-18 51 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

相關問題