5. Рекреативная функция
рекреативной (от лат. recreatio – восстановление) функции СМИ. Рекреация – отдых, восстановление человеком сил, затраченных в процессе трудовой деятельности. Некогда отношение к этому роду журналистской деятельности было снисходительным, словно рекреативная функция относится к числу второстепенных. Но функция развлечения также естественна, как естественно стремление человека к развлечению, отдыху, веселью. И тем не менее нельзя идти на поводу у определенной части аудитории и всю деятельность органов массовой информации сводить к круглосуточному развлечению, как это делают некоторые новые коммерческие радиостанции (добившиеся, впрочем, неплохих рейтингов). Но недопустима и недооценка рекреативной функции, наблюдавшаяся в годы моноидеологии и тотальной пропаганды.
Вполне объяснимо, почему функция развлечения слабо выражена в печатной периодике и широко используется в электронной прессе. Читать – это работа.
Радио – слушают. Слушать по радио музыку, художественное чтение, трансляцию спектаклей и концертов – развлечение. Телевизор – смотрят. Смотреть многочисленные развлекательные программы – отдых.
Разумеется, эти программы нередко к журналистике не имеют никакого отношения, либо самое что ни на есть косвенное. Правда, даже трансляция концертов нуждается в редакторской работеВ любом случае, поскольку развлекательные публикации и программы занимают заметное место в деятельности СМИ, постольку рекреативная функция имеет непосредственное отношение к журналистике. Чрезвычайно важно, когда функция развлечения “перетекает” в культурно-просветительскую функцию СМИ.
Культура – выраженный в созданных людьми материальных и духовных ценностях, в характере и формах отношений между людьми уровень развития общества и составляющих его групп, слоёв, отдельного человека.
Эта функция журналистики заключается в том, чтобы будучи одним из институтов культуры общества, участвовать в пропаганде и распространении в жизни общества высоких культурных ценностей, воспитывать людей на образцах общемировой культуры, тем самым способствуя всестороннему развитию человека.
Ее элементы присутствуют во многих познавательных и занимательных публикациях и программах, но есть газеты и журналы, радиопередачи и даже специальная телепрограмма “Российские университеты”, которые целиком посвящены соответствующей тематике.
В печатной периодике, кроме специальных публикаций в массовой прессе, сюда можно отнести целый спектр научно-популярных изданий, в том числе, экологическую печать (о которой подробно будет сказано в заключительной главе пособия). Общеизвестна просветительская деятельность российского радио, где большой популярностью пользуются передачи, содержащие полезные сведения, советы и рекомендации в области медицины, права, садоводства, коллекционирования и т.д. На телевидении особым долголетием отмечены просветительские передачи: “В мире животных”, “Клуб кинопутешественников”, “Очевидное-невероятное”.
Важно не путать культурно-просветительскую функцию с образовательной функцией, поскольку к последней относятся всевозможные регулярные публикации и циклы передач с дидактическим материалом. Например, изучение английского языка при помощи публикаций в журналах “Англия” и “Америка”, инструктивные публикации в газетах на темы: “Как стать рекламным агентом”, “Как работать секретарем-диспетчером на домашнем телефоне”. Вспомните широкое распространение в нашей стране учебного телевидения (некогда на ЦТ существовала даже Главная редакция учебных программ). Впрочем, во всем мире существуют различные радио- и телевизионные университеты, в том числе платные, которые высылают своим слушателям тексты лекций и контрольные задания, а при успешном окончании курса даже выдают диплом.
Культуроформирующая, рекреативная и рекламно–справочная функции журналистики
Культуроформирующая функция
Несомненно журналистика является частью духовной культуры любого общества.
Журналистика распространяет самые различные образцы культуры. Подобное невозможно без разветвленной системы литературно-художественной журналистики. Так в современности вся журналистская система – это один из главных коммуникационных каналов, ради которого создается эстетическая информация и благодаря которому аудитория может воспринимать эту информацию.
Также журналистика может создавать художественные (литературные, эстрадные, танцевальные и пр.) авторитеты.
Журналистика представляет своей аудитории крайне широкую хронику художественной жизни, освещает события мировой культуры, информирует о национальных явлениях с учетом международных художественных процессов. Так свое отражение в различных СМИ находят художественные выставки, творческие конкурсы и пр.
В журналистском русле содержится и развивается художественная критика, что вообще появилась много лет назад именно как журналистское явление.
Рекреативная функция
Определение 1
Название функции журналистики «рекреативная» происходит от слова recreatio, что означает восстановление человеком сил. То есть, СМИ предоставляют возможность человеку отдохнуть и развлечься.
Ранее отношение к этому роду журналистики было снисходительным. Но стоит отметить, что эта функция естественна, поскольку человеку необходим отдых.
Однако в настоящий момент заметно желание некоторых руководителей СМИ направить деятельность своего средства массовой информации по пути постоянного развлечения своей аудитории (причем, некоторые коммерческие радиостанции, телеканалы и пр. , что отличаются именно этим, имеют очень высокие рейтинги – они востребованы аудиторией).
Рекреационная функция мало выражена в печатной периодике и активно используется в электронных СМИ, а также на радио и телевидении, поскольку на чтение необходимо затрачивать силы.
Телевидение и интернет дают возможность быстрого и легкого доступа к самым различным развлечениям. Конечно же, электронные коммуникации дают больше возможностей аудитории обратиться к разным развлечениям, например, к сериалам, играм и пр., но стоит отметить и то, что при помощи этой возможности люди получают информацию примерно в одном определенно привлекательном и развлекательном стиле.
Рекреационная функция СМИ демонстрирует параллели с древним философским течением, что понимает удовольствие как культ и провозглашает его основной целью жизни человека.
Рекламно-справочная функция
Замечание 1
Благодаря рекламно-справочной функции журналистики происходит накопление человеком определенного багажа знаний, организация его быта, происходит становление его ценностной ориентации.
Аналитической журналистике присущи свои методологические функции – это координирующая, конструирующая, интегрирующая и логико-гносеологическая. В своей основе все они имеют массу информационного и рекламно-справочного материала.
В средствах массовой информации сегодня (особенно в интернет-СМИ) присутствует справочная информация по любому тематическому запросу.
Реклама примыкает к справочным материалам в журналистике. Именно ей отдаются очень большие площади информационного пространства, поскольку реклама для многих СМИ является одним из основных (если не основным) источником финансирования.
Любопытно, что реклама, связывая стандарты потребления с каким-либо образом жизни, выполняет еще и идеологическую функцию.
Реклама способна представлять аудитории образцы для подражания.
реактивная функция — RDocumentation
Описание
Оборачивает обычное выражение для создания реактивного выражения. Концептуально, реактивное выражение — это выражение, результат которого будет меняться со временем.
Использование
реактивный( Икс, env = родитель.frame(), цитируется = ЛОЖЬ, ..., метка = НУЛЬ, домен = getDefaultReactiveDomain(), ..stacktraceon = ИСТИНА )is.reactive(x)
Значение
функция, заключенная в класс S3 «реактивный»
Аргументы
- x
Для
is.reactive()
объект для тестирования. Дляreactive()
выражение. При передачеquo()
sure сreactive()
не забудьте использоватьrlang::inject()
, чтобы отличить, что вы передаете содержимое своего quosure, а не выражение quosure.- env
Родительская среда для реактивного выражения. По умолчанию, это вызывающая среда, такая же, как и при определении обычного нереактивное выражение. Если
x
— это квазура, ав кавычках
— этоTRUE
, тогдаenv
игнорируется.- указанный
Если это
TRUE
, то значениеquote()
ed равноx
будет использоваться при оценкеx
. Еслиx
— это разрешение, и вы хотел бы использовать его выражение как значение дляx
, то вы должны установитьцитируется от
доTRUE
.- …
Не используется.
- этикетка
Метка для реактивного выражения, полезная для отладки.
- домен
См. домены.
- .. трассировка стека
Только расширенное использование. Для манипулирования стеком; видеть
трассировка стека()
.
Сведения
Реактивные выражения — это выражения, которые могут считывать реактивные значения и вызывать другие реактивные выражения. Всякий раз, когда реактивное значение изменяется, любое реактивное выражения, которые от него зависели, помечаются как «недействительные» и будут автоматическое повторное выполнение при необходимости. Если реактивное выражение помечено как недействительными, любые другие реактивные выражения, которые недавно вызывали его, также помечен как недействительный. Таким образом, инвалидация распространяется через выражения, которые зависят друг от друга.
См. учебник Shiny для больше информации о реактивных выражениях.
Примеры
Запустить этот кодбиблиотека (rlang) значения <- реактивные значения (A = 1) реактивныйB <- реактивный({ значения$A + 1 }) # Просмотр значений из консоли R с помощью isolate() изолировать (реактивныйB()) № 2 # Чтобы сохранить выражения для последующего преобразования в реактивные, используйте quote() myquo <- rlang::quo(значения $A + 2) # Неожиданное значение! Отправка quosure напрямую не будет работать должным образом. реактивныйC <- реактивный(myquo) # Мы надеялись на `3`, но вместо этого получаем предоставленную quosure. изолировать (реактивныйC()) # Вместо этого quosure должен быть `rlang::inject()` reactiveD <- rlang::inject(reactive(!!myquo)) изолировать (реактивныйD()) № 3 # (Устаревший) Можно использовать выражения в кавычках выражение <- цитата ({ значения $ A + 3 }) реактивныйE <- реактивный (выражение, в кавычках = ИСТИНА) изолировать (реактивныйE()) № 4
Запустите приведенный выше код в браузере с помощью DataCamp Workspace
5 Реактивные функции | Создание веб-приложений с помощью R Shiny
Существует множество замечательных руководств, в которых объясняются принципы, лежащие в основе реактивных функций, но я никогда не понимал их смысла, когда только начинал, поэтому я просто приведу примеры, которые вы можете использовать. экстраполировать принципы из.
Реактивность — это то, как Shiny определяет, какой код в server()
должен запускаться и когда. Некоторые типы объектов, такие как input
объект или объекты, созданные с помощью reactiveValues()
, могут запускать некоторые типы функций всякий раз, когда они изменяются.
В нашем примере мы будем использовать приложение reactive_demo
. Он показывает три входа выбора, которые позволяют пользователю выбирать значения из столбцов огранки, цвета и чистоты набора данных алмазов
из ggplot2
, а затем рисует график взаимосвязи между каратами и ценой для выбранного подмножества.
Рисунок 5.1: Реактивное демонстрационное приложение. Вы также можете получить доступ к этому приложению с shinintro::app("reactive_demo")
или просмотреть его на отдельной вкладке с интерфейсом витрины.
Вот соответствующий код пользовательского интерфейса. Есть четыре входа: огранка, цвет, чистота и обновление. Есть два выхода: заголовок и сюжет.
коробка( название = "Бриллианты", твердый заголовок = ИСТИНА, selectInput("вырезать", "вырезать", уровни(алмазы$вырезать)), selectInput("цвет", "Цвет", уровни(алмазы$цвет)), selectInput ("Четкость", "Четкость", уровни (алмазы $ ясность)), actionButton("Обновить", "Обновить график") ), коробка( название = "Сюжет", твердый заголовок = ИСТИНА, текстовый вывод ("заголовок"), сюжетВывод("сюжет") )
Всякий раз, когда изменяется вход, он запускает некоторые типы функций.
5.1 Функции рендеринга
Функции, которые отображают выходные данные, такие как renderText()
или renderPlot()
, будут выполняться при изменении ввода в их коде. Вы можете запустить функцию рендеринга, просто поместив реактивный объект в строку, даже если вы не используете его в остальной части кода.
сервер <- функция (ввод, вывод, сеанс) { output$plot <- renderPlot({ данные <- фильтр(алмазы, вырезать == вход $ вырезать, цвет == цвет ввода$, ясность == ввод $ ясность) ggplot(данные, aes(карат, цена)) + geom_point (цвет = "# 605CA8", альфа = 0,5) + geom_smooth (метод = lm, цвет = "# 605CA8") }) вывод$название <- renderText({ input$update # только здесь, чтобы вызвать функцию sprintf("Разрез: %s, Цвет: %s, Четкость: %s", вход $ вырезать, цвет ввода $, ввод $ ясность) }) }
Какие входные данные в приведенном выше примере вызовут запуск renderPlot()
и создание нового графика?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
Какие входные данные вызовут запуск renderText()
и создание нового заголовка?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
5.
2 реактивный() Если вы переместите фильтрацию данных
за пределы renderPlot()
, вы получите сообщение об ошибке, например «Не удается получить доступ к реактивному значению« вырез »за пределами реактивного потребителя». Это означает, что input
значения могут быть прочитаны только внутри определенных функций, таких как reactive()
, ObservEvent()
или функция рендеринга.
Однако мы можем поместить фильтрацию данных внутри reactive()
. Это означает, что всякий раз, когда входные данные внутри этой функции изменяются, код будет запускаться и обновлять значение data()
. Это может быть полезно, если вам нужно пересчитывать таблицу данных каждый раз при изменении входных данных, а затем использовать ее более чем в одной функции.
сервер <- функция (ввод, вывод, сеанс) { данные <- реактивный({ фильтр(алмазы, вырезать == вход $ вырезать, цвет == цвет ввода$, ясность == ввод $ ясность) }) заголовок <- реактивный({ sprintf("Разрез: %s, Цвет: %s, Четкость: %s, N: %d", вход $ вырезать, цвет ввода $, ввод $ ясность) }) output$plot <- renderPlot({ ggplot (данные (), aes (карат, цена)) + geom_point (цвет = "# 605CA8", альфа = 0,5) + geom_smooth (метод = lm, цвет = "# 605CA8") }) вывод$текст <- renderText(название()) }
Какие входные данные в приведенном выше примере вызовут запуск renderPlot()
и создание нового графика?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
Какие входные данные вызовут запуск renderText()
и создание нового заголовка?
cutcolorclarityupdatecut, color & ясностьвсе вышеперечисленное
Моя самая распространенная ошибка — это попытка использовать data
или title
как объект, а не как функцию. Обратите внимание, что первый аргумент ggplot больше не равен 9.0023 data , но data()
и вы устанавливаете значение data с data(newdata)
, а не data <- newdata
. А пока просто запомните это как причуду блеска.
5.3 наблюдатьEvent()
Что, если вы хотите обновлять вещи только при нажатии кнопки обновления, а не всякий раз, когда пользователь меняет параметр?
Мы узнали о ObservEvent()
в Разделе 1.4. Эта функция запускает код всякий раз, когда изменяется значение первого аргумента. Если внутри функции есть реактивные значения, они не будут запускать код при их изменении.
сервер <- функция (ввод, вывод, сеанс) { наблюдатьEvent (ввод $ обновление, { данные <- фильтр(алмазы, вырезать == вход $ вырезать, цвет == цвет ввода$, ясность == ввод $ ясность) title <- sprintf("Разрез: %s, Цвет: %s, Четкость: %s", вход $ вырезать, цвет ввода $, ввод $ ясность) output$plot <- renderPlot({ ggplot(данные, aes(карат, цена)) + geom_point (цвет = "# 605CA8", альфа = 0,5) + geom_smooth (метод = lm, цвет = "# 605CA8") }) output$title <- renderText(название) }) }
Какие входные данные в приведенном выше примере вызовут запуск renderPlot()
и создание нового графика?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
Какие входные данные в приведенном выше примере запустят renderText()
для запуска и создания нового заголовка?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
Вам следует избегать создания реактивных функций внутри других функций, как я сделал выше. Это потому, что эти функции будет срабатывать при изменении любых реактивных входов внутри них. В этом примере это не имеет значения, потому что в функциях рендеринга нет никаких реактивных значений, но это может вызвать огромные проблемы в более сложных приложениях.
5.4 реактивное значение()
Вы можете избежать описанной выше проблемы определения функции рендеринга внутри реактивной функции, создав реактивное значение с помощью reactiveVal()
. Это позволяет вам обновить значение data()
не только с помощью кода внутри функции ObserveEvent()
, которая его создала, но и в любой функции. Это полезно, когда у вас есть несколько функций, которым необходимо обновить это значение.
Здесь мы используем ObservEvent()
для запуска кода фильтрации данных только при нажатии кнопки обновления. Этот новый набор данных присваивается data()
с использованием кода data(newdata)
.
Поскольку data()
возвращает реактивное значение, это вызовет renderPlot()
всякий раз, когда он изменяется.
сервер <- функция (ввод, вывод, сеанс) { данные <- reactiveVal(алмазы) заголовок <- реактивныйВал() наблюдатьEvent (ввод $ обновление, { newdata <- фильтр(алмазы, вырезать == вход $ вырезать, цвет == цвет ввода$, ясность == ввод $ ясность) newtitle <- sprintf("Вырезка: %s, Цвет: %s, Четкость: %s", вход $ вырезать, цвет ввода $, ввод $ ясность) data(newdata) # обновляет данные() title(newtitle) # обновляет title() }) output$plot <- renderPlot({ ggplot (данные (), aes (карат, цена)) + geom_point (цвет = "# 605CA8", альфа = 0,5) + geom_smooth (метод = lm, цвет = "# 605CA8") }) вывод$название <- renderText(название()) }
Какие входные данные в приведенном выше примере вызовут запуск renderPlot()
и создание нового графика?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
Какие входные данные вызовут запуск renderText()
и создание нового заголовка?
cutcolorclarityupdatecut, color & ясностьвсе вышеперечисленное
Мы использовали data <- reactiveVal(diamonds)
для того, чтобы data()
имел значение, которое не вызывало ошибки при renderPlot()
запускается в первый раз.
5.5 реактивное значение()
Вам необходимо настроить новый reactiveVal()
для каждого значения в приложении, которое вы хотите сделать реактивным. Я предпочитаю использовать reactiveValues()
, потому что его можно использовать для любого нового реактивного значения, которое вам нужно, и он работает так же, как input
, за исключением того, что вы можете присвоить ему новые значения.
Вы можете просто установить для нового объекта значение reactiveValues()
или инициализировать его начальными значениями, как показано ниже. Объект v
— это именованный список, точно так же, как ввод
, и когда его значения изменяются, он запускает реактивные функции точно так же, как ввод
.
сервер <- функция (ввод, вывод, сеанс) { v <- реактивные значения ( данные = бриллианты, title = "Все данные" ) наблюдатьEvent (ввод $ обновление, { v$data <- фильтр(алмазы, вырезать == вход $ вырезать, цвет == цвет ввода$, ясность == ввод $ ясность) v$title <- sprintf("Разрез: %s, цвет: %s, четкость: %s", вход $ вырезать, цвет ввода $, ввод $ ясность) }) output$plot <- renderPlot({ ggplot(v$data, aes(карат, цена)) + geom_point (цвет = "# 605CA8", альфа = 0,5) + geom_smooth (метод = lm, цвет = "# 605CA8") }) output$title <- renderText(v$title) }
Какие входные данные в приведенном выше примере вызовут запуск renderPlot()
и создание нового графика?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
Какие входные данные вызовут запуск renderText()
и создание нового заголовка?
cutcolorclarityupdatecut, color & ясностьвсе вышеперечисленное
Обратите внимание, что вы ссылаетесь на настроенные таким образом реактивные значения как v$data
и v$title
, а не data()
и title()
, как установить их v$data <- newdata
, а не v$data(newdata)
.
5.6 eventReactive()
В то время как reactive()
срабатывает всякий раз, когда изменяются какие-либо входные значения внутри него, eventReactive()
срабатывает только при изменении значения первого аргумента, например ObservEvent()
, но возвращает реактивную функцию, например reactive ()
.
сервер <- функция (ввод, вывод, сеанс) { данные <- eventReactive (ввод $ обновление, { фильтр(алмазы, вырезать == вход $ вырезать, цвет == цвет ввода$, ясность == ввод $ ясность) }) title <- eventReactive(input$update, { sprintf("Разрез: %s, Цвет: %s, Четкость: %s", вход $ вырезать, цвет ввода $, ввод $ ясность) }) output$plot <- renderPlot({ ggplot (данные (), aes (карат, цена)) + geom_point (цвет = "# 605CA8", альфа = 0,5) + geom_smooth (метод = lm, цвет = "# 605CA8") }) вывод$текст <- renderText(название()) }
Какие входные данные в приведенном выше примере вызовут запуск renderPlot()
и создание нового графика?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
Какие входные данные вызовут запуск renderText()
и создание нового заголовка?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
5.
7 изолировать() Если вы хотите использовать входное или реактивное значение внутри реактивной функции, но не хотите запускать эту функцию, вы можете изолировать()
это. Вы также можете использовать isolate()
для получения реактивного значения вне реактивной функции.
сервер <- функция (ввод, вывод, сеанс) { данные <- реактивный({ фильтр( бриллианты, вырезать == изолировать (вход $ вырезать), цвет == изолировать (входной цвет $), ясность == ввод $ ясность ) }) заголовок <- реактивный({ спринтф( «Огранка: %s, цвет: %s, чистота: %s», вход $ вырезать, изолировать (входной цвет $), изолировать (ввод $ ясность) ) }) # какой заголовок при инициализации? debug_msg (изолировать (название ())) output$plot <- renderPlot({ ggplot (данные (), aes (карат, цена)) + geom_point (цвет = "# 605CA8", альфа = 0,5) + geom_smooth (метод = lm, цвет = "# 605CA8") }) вывод$название <- renderText(название()) }
Какие входные данные в приведенном выше примере вызовут запуск renderPlot()
и создание нового графика?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
Какие входные данные вызовут запуск renderText()
и создание нового заголовка?
cutcolorclarityupdatecut, color & clearityвсе вышеперечисленное
5.
8 Дополнительные ресурсы- Освоение Shiny — базовая реактивность
- Реактивность - Обзор
- Использовать реактивные выражения
- Освоение Shiny - Освоение реактивности
5.9 Упражнения
Для следующих упражнений клонируйте "reactive_demo" и замените поля в пользовательском интерфейсе приведенным ниже кодом. Удалите весь код в server()
. Убедитесь, что это работает, прежде чем идти вперед.
коробка(ширина = 4, selectInput("stat", "Статистика", c("среднее", "sd")), selectInput("группа", "Группировать по", c("вор", "порядок", "сохранение")), actionButton("обновить", "Обновить таблицу")), коробка (ширина = 8, твердый заголовок = ИСТИНА, заголовок = textOutput("заголовок"), вывод таблицы ("таблица"))
Вы сгруппируете и обобщите таблицу данных msleep
из ggplot2
, вычислив среднее значение или стандартное отклонение для всех (или некоторых) числовых столбцов, сгруппированных по категориальным столбцам vore
, порядок
или сохранение
. Если вы не знаете, как создать такую сводную таблицу с dplyr
, посмотрите на следующий код для конкретного примера.
мссон %>% group_by(вор) %>% summarise_if(is.numeric, "среднее", na.rm = TRUE)
поедать | sleep_total | sleep_rem | цикл_сна | бодрствующий | мозг | масса тела |
---|---|---|---|---|---|---|
карни | 10.378947 | 2.2 | 0,3733333 | 13.62632 | 0,0792556 | 90.75111 |
травы | 9.509375 | 1.366667 | 0,4180556 | 14.49062 | 0,6215975 | 366,87725 |
насекомые | 14.940000 | 3.525000 | 0,1611111 | 9.06000 | 0,0215500 | 12.92160 |
всесторонний | 10.925000 | 1.955556 | 0,5924242 | 13. 07500 | 0,1457312 | 12.71800 |
нет данных | 10.185714 | 1.880000 | 0,1833333 | 13.81429 | 0,0076260 | 0,85800 |
визуализация
Используйте функции рендеринга для обновления выходной таблицы и заголовка при изменении группы или статистики.
сервер <- функция (ввод, вывод, сеанс) { output$table <- renderTable({ мссон %>% group_by(.data[[input$group]]) %>% summarise_if(is.numeric, input$stat, na.rm = TRUE) }) output$caption <- renderText({ sprintf("%ss по %s", toupper(input$stat), input$group) }) }
реактивный
Используйте reactive()
для обновления выходной таблицы и заголовка при изменении группы или статистики. Не обращайте внимания на кнопку обновления.
сервер <- функция (ввод, вывод, сеанс) { данные <- реактивный({ мссон %>% group_by(. data[[input$group]]) %>% summarise_if(is.numeric, input$stat, na.rm = TRUE) }) output$table <- renderTable(data()) заголовок <- реактивный({ sprintf("%ss по %s", toupper(input$stat), input$group) }) output$caption <- renderText(caption()) }
наблюдаемое событие
Используйте ObserveEvent()
, чтобы обновить выходную таблицу соответствующей сводной таблицей и обновить заголовок соответствующим заголовком только при нажатии кнопки обновления.
сервер <- функция (ввод, вывод, сеанс) { наблюдатьEvent (ввод $ обновление, { данные <- msleep %>% group_by(.data[[input$group]]) %>% summarise_if(is.numeric, input$stat, na.rm = TRUE) output$table <- renderTable(данные) подпись <- sprintf("%ss по %s", toupper(input$stat), input$group) output$caption <- renderText(заголовок) }) }
реактивное значение
Используйте reactiveVal()
для обновления выходной таблицы и заголовка только при нажатии кнопки обновления.
сервер <- функция (ввод, вывод, сеанс) { данные <- reactiveVal() заголовок <- реактивныйВал() наблюдатьEvent (ввод $ обновление, { новые данные <- msleep %>% group_by(.data[[input$group]]) %>% summarise_if(is.numeric, input$stat, na.rm = TRUE) данные (новые данные) # это альтернативный способ установить reactiveVal # путем передачи значения в функцию sprintf("%ss по %s", toupper(input$stat), input$group) %>% подпись() }) output$table <- renderTable(data()) output$caption <- renderText(caption()) }
реактивные значения
Используйте reactiveValues()
для обновления выходной таблицы и заголовка только при нажатии кнопки обновления.
сервер <- функция (ввод, вывод, сеанс) { v <- реактивные значения () наблюдатьEvent (ввод $ обновление, { v$data <- msleep %>% group_by(.data[[input$group]]) %>% summarise_if(is.numeric, input$stat, na.rm = TRUE) v$заголовок <- sprintf("%ss по %s", toupper(input$stat), input$group) }) output$table <- renderTable(v$data) output$caption <- renderText(v$caption) }
событиереактивный
Используйте eventReactive()
для обновления выходной таблицы и заголовка только при нажатии кнопки обновления.