R дублируйте объект среды и удалите его ссылки на другие библиотеки

#r #ggplot2 #environment

Вопрос:

Обзор проблемы: Я пытаюсь извлечь только необходимый мне код из пакета R под названием ggpattern, но у меня возникла проблема с двумя объектами среды в библиотеке, которые я не могу понять, как дублировать вне пакета.

Предыстория: Я не могу просто загрузить весь пакет ggpattern, потому что сервер R Studio Pro моей организации не позволит мне установить его из-за его зависимости от пакетов gridpattern и magik (в частности, magik не совместим с нашей настройкой сервера). Поэтому я хочу скопировать необходимый код из ggpattern только для конкретной задачи, которая мне нужна, а именно для создания гистограммы с полосатыми полосами.

Я получил разрешение от сопровождающего пакета на это. Он также заверил меня, что ggpattern-это чистый пакет R и что магия не требуется для выполнения задачи, в которой я нуждаюсь.

Вот основной код ggpattern, который я хочу запустить для создания гистограммы с полосатой полосой:

 ggplot(wr, aes(x = A, y = P, fill = interaction(C, W), pattern = W.P))  
geom_bar_pattern(stat = "identity", 
                 position = "dodge",
                 color = "black",
                 pattern_angle = 45,
                 pattern_density = 0.5,
                 pattern_key_scale_factor = 0.41,
                 pattern_fill = "white",
                 pattern_color = "white")  
scale_pattern_manual(values = c("GP" = "none",
                                "WII" = "stripe",
                                "SLM" = "none"),
                     labels = c("GP","WII","SLM"))
 

Мне нужны функции geom_bar_pattern() и scale_pattern_manual() от ggpattern.

Шаги, Предпринятые До Сих Пор:

Я проследил geom_bar_pattern() и scale_pattern_manual() до самого низкого уровня, который я мог найти в ggpattern и его зависимостях, и поместил эти функции в отдельный скрипт (это длинный скрипт, поэтому я не включал его в этот пост).

Проблема, которая остается, заключается в том, что для функций, которые я вставил в новый сценарий, также требуются два объекта среды с именами GeomBarPattern и GeomRectPattern. Я не могу понять, как дублировать их и сделать их независимыми от ggpattern и его пакетов зависимостей, таких как gridpattern и magik.

Я попытался сохранить эти две среды как новые объекты и загрузить их в R Studio Server Pro, но это не работает, потому что, похоже, они просто ссылаются на ggpattern (и, возможно, gridpattern тоже). Я сохранил среды в виде файлов .RData на своем локальном компьютере, который может использовать ggpattern:

 GeomBarPattern <- ggpattern::GeomBarPattern
save(GeomBarPattern, file = "./Prototype/GeomBarPattern.RData")
GeomRectPattern <- ggpattern::GeomRectPattern
save(GeomRectPattern, file = "./Prototype/GeomRectPattern.RData")
 

Когда я загрузил эти файлы в R Studio Server Pro и загрузил их, я получил сообщение об ошибке:

 > load("GeomBarPattern.RData")
Warning: namespace ‘ggpattern’ is not available and has been replaced
by .GlobalEnv when processing object ‘GeomBarPattern’
> load("GeomRectPattern.RData")
Warning: namespace ‘ggpattern’ is not available and has been replaced
by .GlobalEnv when processing object ‘GeomRectPattern’
 

Как мне дублировать необходимое содержимое, необходимое мне из GeomBarPattern и GeomGridPattern, и сделать их независимыми от ggpattern, gridpattern и magik?

Комментарии:

1. Я бы пошел другим путем: удалил оскорбительные зависимости из пакета и создал его. Я подозреваю, что вы можете просто поискать имена пакетов в репозитории github. В качестве альтернативы, создайте GeomBarPattern себя вместо того, чтобы пытаться скопировать его: github.com/coolbutuseless/ggpattern/blob/… Конечно, вам также нужны суперклассы.

2. Сопровождающий пакета удалил {magik} как обязательную зависимость сегодня, поэтому я снова попытался переустановить {gridpattern} и {ggpattern}, но я обнаружил, что мне все еще нужно установить хотя бы пакет CRAN под названием {sf}, что является жестким требованием для того, что я пытаюсь сделать. Чтобы удалить {sf} как зависимость, основные пакеты, которые мне нужны, потребовали бы значительной переписки, что неосуществимо. По какой-то причине я не могу установить {sf} на R Studio Server Pro. Я запустил тему сообщества R по этой проблеме: community.rstudio.com/t/…

3. Итак, установлены ли системные требования на сервере? Я думаю, что это не так. (Ваша проблема связана с пакетами CRAN. Администраторы вашего сервера ленивы или не знают, о чем говорят.)