Я создал объект gdf (Group.mtcars) и хочу, чтобы пользователь не смог вставить какую-либо дополнительную строку.Для этого я добавляю обработчик, чтобы, когда пользователь добавляет строку, она мгновенно удалялась.
options(guiToolkit = "RGtk2")
library(RGtk2)
library(gWidgets)
library(gWidgetsRGtk2)
Group.mtcars <- gdf(mtcars, container=TRUE)
addHandlerChanged(Group.mtcars, handler = function(h,...){
# some info to be printed
print("out of the 'if conditon'")
IaminRow <- svalue(Group.mtcars, index=TRUE)
print(IaminRow)
# the condition
if (IaminRow > nrow(mtcars)){
# delete additional row
Group.mtcars[,] <<- Group.mtcars[-IaminRow,]
# go to the first row
svalue(Group.mtcars, index=TRUE) <- 1
# some additional info
print("into the 'if condition'")
IaminRow <- svalue(Group.mtcars, index=TRUE)
print(IaminRow)
}
})
Первое странное поведение связано с тем, что предпринимается попыткаобработчик должен быть выполнен еще раз, когда он не должен.Я получаю сообщение об этом:
Ошибка в обработчике (h, ...): попытка применить не-функцию
ВторойСтранное поведение происходит из-за того, что обработчик не работает, когда мы находимся в первой записи.Первая печатная информация выглядит следующим образом:
[1] «вне условия if» [1] 2