Изменение импортированной функции R в глобальном масштабе - PullRequest
0 голосов
/ 11 июня 2019

Я хочу глобально добавить параметр в функцию после импорта.Таким образом, в будущих вызовах функций функция должна вызываться всегда с заданным параметром.В этом случае я хочу добавить параметр функции 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 Ответ

3 голосов
/ 11 июня 2019

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

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

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

...