Я создаю приложение на RShiny с использованием библиотеки Phyloseq, и код начинает становиться неуправляемым. Я видел и другие примеры кода, где программисты любят Джоуи711source свой код из других файлов.
Вот пример:
# Bar
source("panels/panel-server-bar.R", local = TRUE)
# Tree
source("panels/panel-server-tree.R", local = TRUE)
Мой текущий код находится в двух больших файлах сервера и пользовательского интерфейса, и я не знаю, как его разбить.
Простое разделение кода на несколько файлов приводит к поломке программы, но все вместе работает. У кого-нибудь есть способ разбить большую кодовую базу в R? Позволяет ли файл Глобал.Р вызывать несколько файлов кода в приложении?
Что я действительно хочу понять, так это способ сделать код отдельными управляемыми частями. Ошибки, которые я получаю, заключаются в том, что часть графики, которую я создал, работает нормально, а другая сломана. Его ошибки, подобные этой, которые, вероятно, больше основаны на синтаксисе, когда я объединил файлы: Ошибка: индекс вне границ или объекты не найдены. Появляется одно изображение, но его загрузка занимает как минимум в два раза больше времени, чем до того, как я объединил код.
<Я не согласен с тем, что код должен быть написан как единый монолитный файл>. Если у вас есть опыт работы с RShiny, знаете ли вы, как хранить отдельные файлы и вызывать их все в одном приложении, что означает, что вы можете объединить отдельные части одного приложения в единую версию.
Я использую source(...) (как вы показываете, но без local=TRUE), и в целом это работает хорошо. Я не знаю, какие ошибки вы получаете, поэтому мне трудно сделать какие-либо предложения помимо этого.
То, что вы пытаетесь сделать, это «модулировать» ваше приложение, см. Блестящие модули
Спасибо, ДжонКоэн. Эта страница - то, что я искал. Я видел эту страницу несколько раз, но я не понимал, что когда они говорили о модуляризации страниц, они на самом деле давали мне нужное мне решение. Я просто не понимал, что они имели в виду под модульностью, пока вы не указали на это здесь. Еще раз спасибо.





Предположение: если вы переместите свои файлы
.Rв подкаталог из «основного» каталога, будут ли они искать ресурсы по определенному пути? Вы можете посмотреть относительные пути, чтобы найти их. Вы также можете рассмотреть возможность удаленияlocal=TRUE, просто используяsource("panels/panel-server-tree.R")(и др.). Можете ли вы подробнее рассказать о "каша ошибок"? Я не согласен с тем, что код должен быть написан как единый монолитный файл.