file.choose() 块 tcltk::tk_choose.files() 在 R
file.choose() blocks tcltk::tk_choose.files() in R
我今天问了一个类似的问题,但是没能得到肯定的回答。不过我确实得到了使用 browser() 的建议。
我的代码片段如下:
library(tcltk)
obs1 <- TRUE
obs2 <- FALSE
if (obs1) {
if (obs2) {
file.choose()
} else {
file.names <- tk_choose.dir(caption = "Select the folder where files are located")
for (i in 1:length(file.names)) {
x <- read.csv(file = file.names[i])
}
}
}
问题是 file.choose() 调用的弹出窗口 window 阻塞了 tk_choose.dir() 调用的 window。
根据上述所需条件,任何时候都只能出现一个 window。
我做了一些调查,并在几年前在 RNabble 上发现了这个旧的未回答的 post:
https://r.789695.n4.nabble.com/Bringing-tk-choose-files-to-front-td4657938.html
我相信这也是我遇到的问题。
关于如何阻止 R 一次打开两个 windows 有什么想法吗?
我可能误解了你的问题,但你似乎没有正确使用函数 tk_choose.dir
。它 returns 一个带有目录名称的字符串,但您试图循环遍历它,就好像它是一个文件名向量一样。
以下代码按预期运行,启动单个 window 允许我选择目录,然后 returns 由该目录中的所有 csv 文件组成的数据帧列表:
x <- list()
if (obs1) {
if (obs2) {
file.choose()
} else {
Dir <- tk_choose.dir(caption = "Select the folder where files are located")
file.names <- paste0(Dir, "/", list.files(Dir, pattern = "*.csv"))
for (i in 1:length(file.names))
{
x[[i]] <- read.csv(file = file.names[i])
}
}
}
在选择一个包含单个 csv 的目录后,我得到:
str(x)
List of 1
$ :'data.frame': 107 obs. of 4 variables:
..$ unit : Factor w/ 2 levels "Barnsley","Sheffield": 2 2 2 2 2 2 2 2 2 2 ...
..$ sex : Factor w/ 2 levels "Female","Male": 2 2 1 2 1 1 2 2 1 1 ...
..$ age : int [1:107] 47 48 19 66 67 83 38 40 84 68 ...
..$ arrivals : Factor w/ 50 levels "2015-10-16 00:00:00",..:
我今天问了一个类似的问题,但是没能得到肯定的回答。不过我确实得到了使用 browser() 的建议。
我的代码片段如下:
library(tcltk)
obs1 <- TRUE
obs2 <- FALSE
if (obs1) {
if (obs2) {
file.choose()
} else {
file.names <- tk_choose.dir(caption = "Select the folder where files are located")
for (i in 1:length(file.names)) {
x <- read.csv(file = file.names[i])
}
}
}
问题是 file.choose() 调用的弹出窗口 window 阻塞了 tk_choose.dir() 调用的 window。
根据上述所需条件,任何时候都只能出现一个 window。
我做了一些调查,并在几年前在 RNabble 上发现了这个旧的未回答的 post:
https://r.789695.n4.nabble.com/Bringing-tk-choose-files-to-front-td4657938.html
我相信这也是我遇到的问题。
关于如何阻止 R 一次打开两个 windows 有什么想法吗?
我可能误解了你的问题,但你似乎没有正确使用函数 tk_choose.dir
。它 returns 一个带有目录名称的字符串,但您试图循环遍历它,就好像它是一个文件名向量一样。
以下代码按预期运行,启动单个 window 允许我选择目录,然后 returns 由该目录中的所有 csv 文件组成的数据帧列表:
x <- list()
if (obs1) {
if (obs2) {
file.choose()
} else {
Dir <- tk_choose.dir(caption = "Select the folder where files are located")
file.names <- paste0(Dir, "/", list.files(Dir, pattern = "*.csv"))
for (i in 1:length(file.names))
{
x[[i]] <- read.csv(file = file.names[i])
}
}
}
在选择一个包含单个 csv 的目录后,我得到:
str(x)
List of 1
$ :'data.frame': 107 obs. of 4 variables:
..$ unit : Factor w/ 2 levels "Barnsley","Sheffield": 2 2 2 2 2 2 2 2 2 2 ...
..$ sex : Factor w/ 2 levels "Female","Male": 2 2 1 2 1 1 2 2 1 1 ...
..$ age : int [1:107] 47 48 19 66 67 83 38 40 84 68 ...
..$ arrivals : Factor w/ 50 levels "2015-10-16 00:00:00",..: