R gWidgets删除参数和传递参数
我是R世界的新手,在与Gwidget合作时遇到了一些困难,我希望有人能帮助我。首先,我的R版本是2.15.2.,我使用的是Windows7 32位 我想创建一个带有输入/输出和选择Yes,No的GUI,因此,如果用户选择using gradio“Yes”,将显示一组额外的参数,如果“No”,则这些参数将消失,或者变灰。最后,如果用户单击OK按钮,那么它将传递一些参数,稍后将使用这些参数调用另一个函数。 以下是我的问题: 你知道当用户选择“否”时如何删除参数吗?现在,如果我单击“否”,它会打印我想要的内容,但当我再次单击“是”时,它会显示另外三个参数。 您知道当用户单击“确定”时如何传递参数吗?这是为了以后单击“确定”时,它将调用或使用不同的r代码生成另一个函数 非常感谢你的帮助 塞萨尔 以下是我的代码:R gWidgets删除参数和传递参数,r,gwidgets,R,Gwidgets,我是R世界的新手,在与Gwidget合作时遇到了一些困难,我希望有人能帮助我。首先,我的R版本是2.15.2.,我使用的是Windows7 32位 我想创建一个带有输入/输出和选择Yes,No的GUI,因此,如果用户选择using gradio“Yes”,将显示一组额外的参数,如果“No”,则这些参数将消失,或者变灰。最后,如果用户单击OK按钮,那么它将传递一些参数,稍后将使用这些参数调用另一个函数。 以下是我的问题: 你知道当用户选择“否”时如何删除参数吗?现在,如果我单击“否”,它会打印我想
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中列表的一个组件