svalue(h$obj, drop = FALSE)
дает вам новое значение для обновленной строки. Таким образом, в теории,
addHandlerChanged(h, handler = function(h,...) {
svalue(h$obj, drop = FALSE)[] <- lapply(
svalue(h$obj, drop = FALSE),
function(x) {
x[is.na(x)] <- ""
}
)
}
должен заменить все NA
с с ""
. Есть две проблемы:
Во-первых, замена отсутствующих значений пустой строкой преобразует весь столбец в вектор символа, который вам, вероятно, не нужен, а во-вторых, существует проблема с svalue<-
, что означает значения не обновляются.
Я думаю, что проблема заключается в следующей:
methods(`svalue<-`)
## [1] svalue<-.default* svalue<-.GCheckbox* svalue<-.GFormLayout* svalue<-.GGroup*
## [5] svalue<-.GHtml* svalue<-.GLabel* svalue<-.GMenuBar* svalue<-.GRadio*
## [9] svalue<-.GToolBar* svalue<-.GTree*
показывает, что нет GDf
-специфического метода для установки SValue, так svalue<-.default
будет называться.
gWidgets2:::`svalue<-.default`
## function (obj, index = NULL, ..., value)
## {
## if (!isExtant(obj)) {
## return(obj)
## }
## if (getWithDefault(index, FALSE))
## obj$set_index(value, ...)
## else obj$set_value(value, ...)
## obj
## }
Это вызывает метод set_value
объекта.
ls(attr(h, ".xData"))
## [1] "add_cell_popup" "add_popup_to_view_col" "add_to_parent"
## [4] "add_view_columns" "block" "block_editable_column"
## [7] "cell_popup_id" "change_signal" "clear_stack"
## [10] "clear_view_columns" "cmd_coerce_column" "cmd_insert_column"
## [13] "cmd_remove_column" "cmd_replace_column" "cmd_set_column_name"
## [16] "cmd_set_column_names" "cmd_stack" "coerce_with"
## [19] "connected_signals" "default_cell_popup_menu" "default_expand"
## [22] "default_fill" "default_popup_menu" "freeze_attributes"
## [25] "get_column_index" "get_column_value" "get_dim"
## [28] "get_name" "get_view_column" "handler_id"
## [31] "initFields" "initialize" "initialize#GComponent"
## [34] "initialize#GWidget" "invoke_change_handler" "invoke_handler"
## [37] "is_editable" "map_j" "model"
## [40] "not_deleted" "notify_observers" "parent"
## [43] "set_editable" "set_frame" "set_name"
## [46] "set_names" "set_parent" "store"
## [49] "toolkit" "unblock_editable_column" "widget"
но, похоже, еще не реализовано.
'' '' НЕ пробелы. Если 'addHandlerChanged' является функцией R из внесенного пакета, вы должны включить вызов' library' или 'require', который загружает его. –
Спасибо, я добавил это. –
Я понимаю, что у вас есть интересная смесь функций и функций определения функции, и поскольку вы только что опубликовали ошибочный код, может быть трудно угадать ваши намерения. Также: 'w2 <- gwindow (« редактор ключей ») Ошибка: не удалось найти функцию« gwindow »' –