用于更改脚本中的多个工作目录的GUI(R)

时间:2015-05-16 21:11:31

标签: r user-interface

所以,我有代码将两堆数据相互比较, 例如,在饮食计划之前和饮食计划之后。

因为使用代码的人坦率地说是代码恐惧,所以我试图让它尽可能地易于使用。

我希望他们能够使用GUI来选择工作目录的路径,例如,

    a. Select Before Working Directory:  [             ]↓ 
    b. Select After  Working Directory:  [             ]↓ 
    c. Select Output Location         :  [             ]↓ 

来自a的路径需要在脚本中存储为字符串,因为我按以下方式使用它:

  a = "path1"
  b = "path2"
  c = "path3"

  setwd(a)
  <<code>>
  <<code>>

  setwd(b)
  <<code>>
  <<code>>

  setwd(c)
  write.csv( df, "file_name")

Rcmdr似乎是一个选项,但对我的目的而言似乎非常过分。

更新: 我也遇到了dlgDir svDialogs包的operations.count - 非常方便。

1 个答案:

答案 0 :(得分:2)

您可以使用基座file.choose()dirname()执行此类操作:

cat("a. Select Before Working Directory:") 
a <- file.choose()
a <- dirname(a)
cat("b. Select After  Working Directory:")
b <- file.choose()
b <- dirname(b)
cat("c. Select Output Location:")
c <-  file.choose()
c <- dirname(c)

甚至可能tcltk

require(tcltk)
pathA <- function() {
  a <<- tk_choose.dir()
}
pathB <- function() {
  b <<- tk_choose.dir()
}
pathC <- function() {
  c <<- tk_choose.dir()
}

#create UI with three buttons
tt <- tktoplevel()
buttonA <- tkbutton(tt, text = "a. Select Before Working Directory:", command = pathA)
buttonB <- tkbutton(tt, text = "b. Select After  Working Directory:", command = pathB)
buttonC <- tkbutton(tt, text = "c. Select Output Location:", command = pathC)


tkpack(buttonA)
tkpack(buttonB)
tkpack(buttonC)