Изменение импортированной функции R в глобальном масштабе

Я хочу глобально добавить параметр в функцию после импорта. Таким образом, в будущих вызовах функций функция должна вызываться всегда с заданным параметром. В этом случае я хочу добавить параметр функции in_schema("abc") к функции tbl из dplyr.

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

getAnywhere("tbl.DBIConnection")

Был найден единственный объект, соответствующий 'tbl.DBIConnection'. Он был найден в следующих местах, где был зарегистрирован метод S3 для tbl из пространства имен dplyr namespace:dplyr со значением

function (src, from, ...) 
{
    check_dbplyr()
    tbl(dbplyr::src_dbi(src, auto_disconnect = FALSE), from = from, 
        ...)
}

Как я мог изменить tbl-функцию (в файле сценария), чтобы в будущих вызовах всегда использовалась определенная схема?

вот так:

tbl(connection, table, in_schema("abc"))

без необходимости постоянно указывать параметр in_schema.

1 ответ

Решение

Не копируйте и не изменяйте функцию, это грязно, вместо этого сделайте что-то вроде этого:

tbl_abc <- function(src, from, ...){
  tbl(src, in_schema("abc", from), ...)
}

кстати tbl(connection, table, in_schema("abc")) неправильный синтаксис, in_schema("abc") нужен второй аргумент, и он передается ..., которые не используются tbl.DBIConnection()

Другие вопросы по тегам