我想手动保存我的标签分隔文件。我的意思是我希望用户在他想要保存数据时选择目录和文件名。 (例如,我已将单个文件合并为单个文件,并希望保存它。)
通常我使用write.table
但在write.table
中我们定义了该函数中的目录路径和文件名,但我想要一个用户可以在其所需目录中保存任何名称的文件的函数。
答案 0 :(得分:11)
只需使用file.choose()
功能,如下所示:
write.table(yerdata, file = file.choose(new = TRUE))
至少在Windows上,这会打开一个save-as命令对话框。
答案 1 :(得分:4)
令人讨厌的是,tcltk软件包没有“另存为”的功能,它只有一个用于选择现有文件的文件选择器。
幸运的是,你可以通过一些tcl电话采取DIY方法:
require(tcltk)
write.table(yerdata,file = tclvalue(tcl("tk_getSaveFile")))
如果需要,可以将tk_choose.files
函数源用作模板,以便为tcl(“tk_getSaveFile”)编写更好的接口。在包中看起来似乎是一个明显的遗漏:tcltk虽然......
答案 2 :(得分:1)
使用gWidgets
:
gfile("Save yerdata", type = "save", handler = function(h, ...)
{
write.table(yerdata, file = h$file)
})
答案 3 :(得分:0)
一个(可能不太理想)选项是使用readline
提示用户输入完整路径和文件名(或者只是文件名,如果你想以编程方式选择目录)然后简单地通过write.table
上的那个值。这是一个草图:
FILE_PATH <- readline(prompt = "Enter a full path and file name: ")
#Some checking to make sure you got a valid file path...
write.table(yerdata, file = FILE_PATH)
请注意,根据?readline
,这实际上只有在以交互方式运行R时才有效。
答案 4 :(得分:0)
截至2017年,tcltk2
套餐是对tcltk
的改进:
library(tcltk2)
filename <- tclvalue(tkgetSaveFile())
if (!nchar(filename)) {
tkmessageBox(message = "No file was selected!")
} else {
tkmessageBox(message = paste("The file selected was", filename))
}
使用过滤器,假设只能保存为JPG / JPEG:
jpeg_filename <- tclvalue(
tkgetSaveFile(initialfile = "foo.jpg",
filetypes = "{ {JPEG Files} {.jpg .jpeg} } { {All Files} * }")
)