2017-07-05 2 views
1

Ich verwende das Tcltk-Paket in R, um eine GUI zu erstellen, und ich versuche, eine Funktion in R zu schreiben, die beim Speichern automatisch eine .xlsx-Erweiterung am Ende eines Dateinamens hinzufügt. Wenn es das Save As Fenster aufruft, fügt es die Erweiterung jedoch nicht hinzu. Jede Hilfe wird geschätzt, danke.Erweiterung automatisch hinzufügen beim Speichern in R

library(openxlsx) 
library(tcltk) 
saveFile1 <- function(){ 
    write.xlsx(c, tclvalue(tkgetSaveFile(
    filetypes = "{ {Excel} {*.xlsx} }"))) 
} 
+0

Brilliant, Matt Jewett! Danke, das hat meine Anfrage perfekt beantwortet! – Sam

+0

Das Besondere, was ich suchte, war die defaultextension = ".xlsx" -Linie. Dadurch wird die Datei .xlsx automatisch an das Ende des Dateinamens angehängt. – Sam

Antwort

1

Ich denke, das sollte den Trick tun.

saveFile1 <- function(c){ 
    require(tcltk) 
    require(openxlsx) 

    # Prompt for file 
    filepath <- tclvalue(tkgetSaveFile(filetypes = "{ {Excel} {*.xlsx} }", defaultextension = ".xlsx")) 

    # Check if file was specified 
    if(filepath != ""){ 
    # Ensure that the last 5 characters are .xlsx 
    filepath <- ifelse(substr(filepath, nchar(filepath) - 4, nchar(filepath)) == ".xlsx", filepath, paste0(filepath,".xlsx")) 

    # Write the file 
    write.xlsx(c, filepath) 
    } 
} 

# Test the function 
saveFile1(mtcars) 
+0

Wenn Sie neugierig auf einige andere Parameter sind, die Sie an tkgetSaveFile anschließen können, können Sie sie hier aufgelistet sehen https://wiki.tcl.tk/1060 –

+0

Das Toolpaket hat einige Funktionen, die für diese Art von Sache nützlich sind: 'file_ext ',' Dateipfad_sans_ext' –

Verwandte Themen