Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R gWidgets删除参数和传递参数_R_Gwidgets - Fatal编程技术网

R gWidgets删除参数和传递参数

R gWidgets删除参数和传递参数,r,gwidgets,R,Gwidgets,我是R世界的新手,在与Gwidget合作时遇到了一些困难,我希望有人能帮助我。首先,我的R版本是2.15.2.,我使用的是Windows7 32位 我想创建一个带有输入/输出和选择Yes,No的GUI,因此,如果用户选择using gradio“Yes”,将显示一组额外的参数,如果“No”,则这些参数将消失,或者变灰。最后,如果用户单击OK按钮,那么它将传递一些参数,稍后将使用这些参数调用另一个函数。 以下是我的问题: 你知道当用户选择“否”时如何删除参数吗?现在,如果我单击“否”,它会打印我想

我是R世界的新手,在与Gwidget合作时遇到了一些困难,我希望有人能帮助我。首先,我的R版本是2.15.2.,我使用的是Windows7 32位

我想创建一个带有输入/输出和选择Yes,No的GUI,因此,如果用户选择using gradio“Yes”,将显示一组额外的参数,如果“No”,则这些参数将消失,或者变灰。最后,如果用户单击OK按钮,那么它将传递一些参数,稍后将使用这些参数调用另一个函数。 以下是我的问题:

你知道当用户选择“否”时如何删除参数吗?现在,如果我单击“否”,它会打印我想要的内容,但当我再次单击“是”时,它会显示另外三个参数。 您知道当用户单击“确定”时如何传递参数吗?这是为了以后单击“确定”时,它将调用或使用不同的r代码生成另一个函数 非常感谢你的帮助

塞萨尔

以下是我的代码:

require(gWidgets)
options("guiToolkit"="RGtk2")

#options(expressions=500000)
w <- gwindow("")
g <- ggroup(horizontal = FALSE, container = w)

glabel("Input/Output", container = g)
inputFileDir <- gfilebrowse (text = "Select file...", type = "open", quote = FALSE,
             filter = list("Text File" = list(patterns = c("*.txt"))), container = g)
svalue(inputFileDir)

outputFileDir <- gfilebrowse (text = "Input file name...", type = "save", quote = FALSE,
                             filter = list("Text File" = list(patterns = c("*.txt"))), container = g)
svalue(outputFileDir)

glabel("Direction?", container = g)
DirSelec <- c("Yes","No")
rbF <- function(h,...){
  if (svalue(h$obj, index=TRUE) == 1){
    print ( "define handler here" )

    glabel("Meridional (Raster file):", container = g)
    fieldConstrainDir_v <- gedit("", container = g, default = 0)
    svalue(fieldConstrainDir_v)

    glabel("Zonal (Raster file):", container = g)
    fieldConstrainDir_u <- gedit("", container = g, default = 0)
    svalue(fieldConstrainDir_u)

    glabel("Max. Angle:", container = g)
    maxAng <- gedit("", width = 3, initial.msg = "Paste the path to the raster file (no extensions)", default = 0, container = g)
    svalue(maxAng)
  }else {
    #(svalue(h$obj, index=TRUE) == 2)
    print ( "When User click NO, it needs to go or gray out" )
  }
}

rb <- gradio(DirSelec, container = g)
selected = svalue(rb, index=TRUE) <- 2
rbH <- addHandlerClicked(rb, handler = rbF)

bg <- ggroup(container = g)
addSpring(bg)
onOK <- function(h,...){
  print(svalue(inputFileDir))
  #chartr("\\", "/", print(svalue(inputFileDir)))
  print(svalue(outputFileDir))
  print(svalue(fieldConstrainDir_v))
  print(svalue(fieldConstrainDir_u))
  print(svalue(maxAng))

}

gbutton("    OK    ", container = bg, handler = onOK)
gbutton(" Cancel ", container=bg, handler = function(h,...) dispose(w))

您有多种选择:


您可以将额外的参数放入gexpandgroup小部件中,并调用visible,因为您有各种选项:

您可以将额外的参数放入gexpandgroup小部件中,并调用visible,代码如下:

require(gWidgets)
w <- gwindow("") 
g <- ggroup(cont = w, horizontal = FALSE) 
g1 <- ggroup(cont = w) 
Vl <- list () 

fr3 <- gframe ("", cont=g, horizontal=FALSE) 
l3 <- glayout ( cont = fr3 , expand=TRUE) 
l3 [1,1] <- NbS <- glabel("Type", cont = l3) 
l3 [1,2] <- (Vl$NbS <- gcombobox (c("Dis","IDis","K"), cont = l3)) 

fr4 <- gframe ("", cont=g, horizontal=FALSE) 
l4 <- glayout (cont=fr4, expand = TRUE) 
l4 [1,1] <- Dm <- glabel("Dist", cont = l4) 
l4 [1,2] <- (Vl$Dm <- gedit("0", cont = l4))

rbC <- function (h,...){ 
  out <- lapply(Vl, svalue) 
  print(out) 
  if (out$NbS == "Dis") {
    print("Dis") 
    print(out$Dm) 
    # Dm <- get(out$Dm, get(svalue(Dm))) 
    # Dm <- get(out$Dm) 
    # dsrc <- source(".../Dis.r") 
    # print (do.call (dsrc, out)) 
    } else if (out$NbSelec == "IDis") {
      print("IDis") 
      }
  } 
ok <- gbutton("OK", cont = g1, handler=rbC) 
当我打印时,正在显示变量名称和值,我想要的是能够使用与Dis.r和do.call中名称相同的变量,并根据我的选择运行r脚本

非常感谢 C

以下是代码:

require(gWidgets)
w <- gwindow("") 
g <- ggroup(cont = w, horizontal = FALSE) 
g1 <- ggroup(cont = w) 
Vl <- list () 

fr3 <- gframe ("", cont=g, horizontal=FALSE) 
l3 <- glayout ( cont = fr3 , expand=TRUE) 
l3 [1,1] <- NbS <- glabel("Type", cont = l3) 
l3 [1,2] <- (Vl$NbS <- gcombobox (c("Dis","IDis","K"), cont = l3)) 

fr4 <- gframe ("", cont=g, horizontal=FALSE) 
l4 <- glayout (cont=fr4, expand = TRUE) 
l4 [1,1] <- Dm <- glabel("Dist", cont = l4) 
l4 [1,2] <- (Vl$Dm <- gedit("0", cont = l4))

rbC <- function (h,...){ 
  out <- lapply(Vl, svalue) 
  print(out) 
  if (out$NbS == "Dis") {
    print("Dis") 
    print(out$Dm) 
    # Dm <- get(out$Dm, get(svalue(Dm))) 
    # Dm <- get(out$Dm) 
    # dsrc <- source(".../Dis.r") 
    # print (do.call (dsrc, out)) 
    } else if (out$NbSelec == "IDis") {
      print("IDis") 
      }
  } 
ok <- gbutton("OK", cont = g1, handler=rbC) 
当我打印时,正在显示变量名称和值,我想要的是能够使用与Dis.r和do.call中名称相同的变量,并根据我的选择运行r脚本

非常感谢
C

非常感谢John@jverzani,我将根据您的评论对其进行修改,但有一件事,当我尝试设置默认值,即FieldConstraintDir\u v时,您可能需要gedit0,container=g,强制.with=as.numeric。没有默认参数。在svalue之前的字符串上调用强制.with函数。您好,John@jverzani,谢谢您的帮助,我根据您的注释修改了代码,并且我能够在列表中传递参数,我将其更改为Lappy,因为我需要单独的参数。然而,我仍然感到困惑,无法根据我在gcombobox中的选择提取和分配变量名。更清楚地说,如果我选择Dis,那么我需要用适当的参数加载具有函数“Dis.r”的脚本,如果我选择IDis,那么将用适当的参数名称加载并运行“IDis.r”代码。这是一个代码示例:您希望使用一个值来拾取文件。假设您使用sappyl、svalue、SIMPLIFY=FALSE,那么您将得到一个包含命名组件的列表。然后一些函数,如functionbname,…={withlist…,sourcesprint%s.R,bname,local=TRUE}其中bname是组合框的变量名,是Sapply列表的一个组成部分。非常感谢John@jverzani,我将根据您的评论对其进行修改,不过有一件事,当我试图设置默认值,即FieldConstraintDir_v时,您可能需要gedit0,container=g,强制.with=as.numeric。没有默认参数。在svalue之前的字符串上调用强制.with函数。您好,John@jverzani,谢谢您的帮助,我根据您的注释修改了代码,并且我能够在列表中传递参数,我将其更改为Lappy,因为我需要单独的参数。然而,我仍然感到困惑,无法根据我在gcombobox中的选择提取和分配变量名。更清楚地说,如果我选择Dis,那么我需要用适当的参数加载具有函数“Dis.r”的脚本,如果我选择IDis,那么将用适当的参数名称加载并运行“IDis.r”代码。这是一个代码示例:您希望使用一个值来拾取文件。假设您使用sappyl、svalue、SIMPLIFY=FALSE,那么您将得到一个包含命名组件的列表。然后一些函数,如functionbname,…={withlist…,sourcesprint%s.R,bname,local=TRUE}其中bname是组合框的变量名,是sapply中列表的一个组件