Есть ли способ разбить (модулировать) код в приложении RShiny?

Я создаю приложение на RShiny с использованием библиотеки Phyloseq, и код начинает становиться неуправляемым. Я видел и другие примеры кода, где программисты любят Джоуи711source свой код из других файлов.

Вот пример:

 # Bar
   source("panels/panel-server-bar.R", local = TRUE)
 # Tree
   source("panels/panel-server-tree.R", local = TRUE)

Мой текущий код находится в двух больших файлах сервера и пользовательского интерфейса, и я не знаю, как его разбить.

Простое разделение кода на несколько файлов приводит к поломке программы, но все вместе работает. У кого-нибудь есть способ разбить большую кодовую базу в R? Позволяет ли файл Глобал.Р вызывать несколько файлов кода в приложении?

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

r2evans 24.02.2019 22:31

Что я действительно хочу понять, так это способ сделать код отдельными управляемыми частями. Ошибки, которые я получаю, заключаются в том, что часть графики, которую я создал, работает нормально, а другая сломана. Его ошибки, подобные этой, которые, вероятно, больше основаны на синтаксисе, когда я объединил файлы: Ошибка: индекс вне границ или объекты не найдены. Появляется одно изображение, но его загрузка занимает как минимум в два раза больше времени, чем до того, как я объединил код.

Ariel A 25.02.2019 00:29

<Я не согласен с тем, что код должен быть написан как единый монолитный файл>. Если у вас есть опыт работы с RShiny, знаете ли вы, как хранить отдельные файлы и вызывать их все в одном приложении, что означает, что вы можете объединить отдельные части одного приложения в единую версию.

Ariel A 25.02.2019 00:31

Я использую source(...) (как вы показываете, но без local=TRUE), и в целом это работает хорошо. Я не знаю, какие ошибки вы получаете, поэтому мне трудно сделать какие-либо предложения помимо этого.

r2evans 25.02.2019 01:04

То, что вы пытаетесь сделать, это «модулировать» ваше приложение, см. Блестящие модули

JohnCoene 25.02.2019 10:10

Спасибо, ДжонКоэн. Эта страница - то, что я искал. Я видел эту страницу несколько раз, но я не понимал, что когда они говорили о модуляризации страниц, они на самом деле давали мне нужное мне решение. Я просто не понимал, что они имели в виду под модульностью, пока вы не указали на это здесь. Еще раз спасибо.

Ariel A 25.02.2019 15:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
79
0

Другие вопросы по теме