Загрузка данных с помощью gWidgets

Я пытался настроить очень простой графический интерфейс с R, состоящим из одной кнопки, которую я использую для загрузки RData в рабочую область.

Код выглядит так:

rm(list = ls()) # clean workspace
library(gWidgets)
library(gWidgetstcltk)
source("loadData.R")
options("guiToolkit"="tcltk")
win=gwindow("Analysis", visible = TRUE)
group = ggroup(horizontal = FALSE, container=win)
obj=gbutton("Load data", container = group,  handler = loadData   ("dataXML_saved.RData"))

Когда я получаю источник, я в конечном итоге получаю окно по желанию. Однако, когда я снова нажимаю кнопку «загрузить данные», я получаю следующее сообщение об ошибке:

Ошибка в FUN(X[[i]], ...): попытка применить нефункцию

Функция загрузки данных данных выглядит так:

loadData = function(file){
load(file, .GlobalEnv)    
}

По какой-то причине обработчик gbutton не принимает функцию загрузки. Вот почему я встроил его в функцию loadData.

Есть идеи, в чем может быть проблема?


person Tarik Ferhatbegovic    schedule 05.04.2018    source источник


Ответы (2)


Попробуйте использовать анонимную функцию. Кажется, вы передаете выражение в качестве обработчика.

person jverzani    schedule 06.04.2018

Надеюсь, я правильно понял то, что вы упомянули. Итак, это то, что я пытался реализовать в конечном итоге, однако безуспешно:

library(gWidgets)
library(gWidgetstcltk)

w <- gwindow("Button examples")
g <- ggroup(container = w)
addSpring(g) ## push to right of widget
gbutton("help", container = g)
addSpace(g, 20) ## some breathing room
gbutton("cancel", container = g)
gbutton("ok", container = g, handler = lapply("dataXML_saved.RData",     function(x) load(x)))

Я получаю то же сообщение об ошибке, что и раньше.

person Tarik Ferhatbegovic    schedule 09.04.2018
comment
Вам нужен обработчик=функция(h,...) {.......}. Где вы помещаете свои команды между фигурными скобками. - person jverzani; 10.04.2018