Я пытаюсь упростить процесс создания и отправки запросов в API Google Analytics через skardhamar's rga. Я возглавляю небольшую группу аналитиков, которая создает отчеты для клиентов, а мои коллеги гораздо менее удобны в работе со сценариями и R. Как таковой, я пытаюсь предоставить несколько базовых элементов и шаблон отчета, чтобы уменьшить сложность.Использование конструктора функций для добавления методов в ссылочный класс
Мы часто проводим сравнения между сайтами, поэтому я создал ссылочный класс, специфичный для профиля, который содержит такие вещи, как ID учетной записи, идентификатор профиля и т. Д. Он будет иметь небольшой набор предопределенных методов запросов, таких как следующее:
profile <- setRefClass("profile",
fields = list(
accountID = "character",
profileID = "character"),
methods = list(
topPages = function() {
ga$getData(profileID,
start.date = helper$start,
end.date = helper$end,
metrics = "ga:pageviews,ga:bounceRate",
dimensions = "ga:pagePath",
sort = "-ga:pageviews")
})
)
Я может в конечном итоге добавить поле для хранения API возвращается в ограничить количество ненужных вызовов API, которые мы делаем, но это не является ни здесь, ни там.
Для построения этих объектов профилей, а также добавлять новые методы их эталонного класса, у меня есть помощник ссылочный класс:
helper <- setRefClass("helper",
fields = list(
start = "character",
end = "character"),
methods = list(
newMethod = function(name="", metrics="", dimensions="",
sort="") {
**take the passed arguments and construct a new
query function**
**add function to the profile reference class**
},
newProfile = function(account="", profile="", name="") {
**search for matching account and profile**
**create new profile-class object with the passed name**
})
)
Игнорируя потенциальные проблемы в том, как я заказал эти примеры, является helper$newMethod()
Я описал это даже возможно?
Если я понимаю, что вы хотите создать метод «на лету» или динамически для класса/объекта из другого объекта? Если да, можете ли вы сократить свои классы и удалить всю ненужную информацию, чтобы привести только небольшой пример? – agstudy