#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. Администраторы вашего сервера ленивы или не знают, о чем говорят.)