Я пытаюсь сгенерировать широту и долготу в R, используя пакет localgeo
из function1
в моем собственном пакете, однако я не могу понять, как это сделать без явной загрузки пакета.
Как я могу включить функцию внутри пакета package1 для быстрого доступа к скрытым средам package2 и их объектам?
### fails
data <- data.frame(City = c("New York", "Miami", "Los Angeles"),
State = c("NY", "FL", "CA")
data <- cbind(data, localgeo::geocode(data[["City"]], data[["State"]]))
Error in UseMethod("tbl_vars") :
no applicable method for 'tbl_vars' applied to an object of class "NULL"
### works
library(localgeo)
data <- data.frame(City = c("New York", "Miami", "Los Angeles"),
State = c("NY", "FL", "CA")
data <- cbind(data, geocode(data[["City"]], data[["State"]]))
Полагаю, проблема в том, что функция localgeo :: geocode () выглядит как
function (city, state)
{
data.frame(city = as.character(city), state = as.character(state),
stringsAsFactors = FALSE) %>% left_join(.localgeo$geo_db,
by = c("city", "state")) %>% select(lon, lat)
}
<environment: namespace:localgeo>
и я не знаю, как сделать .localgeo
доступным для моей функции.
Обновления: кажется, что использование Depends: localgeo
в файле DESCRIPTION
моегоПакет не только «загружает», но и «присоединяет» localgeo
, поэтому я могу без проблем запустить localgeo::geocode()
.Конечно,
Если нет веских причин, вам следует всегда перечислять пакеты в разделе «Импорт не зависит».Это связано с тем, что хороший пакет является автономным и сводит к минимуму изменения в глобальной среде (включая путь поиска).Единственное исключение - если ваш пакет предназначен для использования в сочетании с другим пакетом.Например, аналоговый пакет построен поверх веганского.Это бесполезно без вегана, поэтому он имеет веганский в зависимости от импорта.Точно так же ggplot2 должен действительно зависеть от масштабов, а не импортировать его. Пространство имен
Возможно ли получить доступ к скрытым средам в package2
в моем package1
без "прикрепления" package2
?
Кте, кто ищет MWE, задача: решить эту MWE