5. Рекреативная функция
рекреативной (от лат. recreatio – восстановление) функции СМИ. Рекреация – отдых, восстановление человеком сил, затраченных в процессе трудовой деятельности. Некогда отношение к этому роду журналистской деятельности было снисходительным, словно рекреативная функция относится к числу второстепенных. Но функция развлечения также естественна, как естественно стремление человека к развлечению, отдыху, веселью. И тем не менее нельзя идти на поводу у определенной части аудитории и всю деятельность органов массовой информации сводить к круглосуточному развлечению, как это делают некоторые новые коммерческие радиостанции (добившиеся, впрочем, неплохих рейтингов). Но недопустима и недооценка рекреативной функции, наблюдавшаяся в годы моноидеологии и тотальной пропаганды.
Вполне объяснимо, почему функция развлечения слабо выражена в печатной периодике и широко используется в электронной прессе. Читать – это работа.
Радио – слушают. Слушать по радио музыку, художественное чтение, трансляцию спектаклей и концертов – развлечение. Телевизор – смотрят. Смотреть многочисленные развлекательные программы – отдых.
Разумеется, эти программы нередко к журналистике не имеют никакого отношения, либо самое что ни на есть косвенное. Правда, даже трансляция концертов нуждается в редакторской работеВ любом случае, поскольку развлекательные публикации и программы занимают заметное место в деятельности СМИ, постольку рекреативная функция имеет непосредственное отношение к журналистике. Чрезвычайно важно, когда функция развлечения “перетекает” в культурно-просветительскую функцию СМИ.
Культура – выраженный в созданных людьми материальных и духовных ценностях, в характере и формах отношений между людьми уровень развития общества и составляющих его групп, слоёв, отдельного человека.
Эта функция журналистики заключается в том, чтобы будучи одним из институтов культуры общества, участвовать в пропаганде и распространении в жизни общества высоких культурных ценностей, воспитывать людей на образцах общемировой культуры, тем самым способствуя всестороннему развитию человека.
Ее элементы присутствуют во многих познавательных и занимательных публикациях и программах, но есть газеты и журналы, радиопередачи и даже специальная телепрограмма “Российские университеты”, которые целиком посвящены соответствующей тематике.
В печатной периодике, кроме специальных публикаций в массовой прессе, сюда можно отнести целый спектр научно-популярных изданий, в том числе, экологическую печать (о которой подробно будет сказано в заключительной главе пособия). Общеизвестна просветительская деятельность российского радио, где большой популярностью пользуются передачи, содержащие полезные сведения, советы и рекомендации в области медицины, права, садоводства, коллекционирования и т.д. На телевидении особым долголетием отмечены просветительские передачи: “В мире животных”, “Клуб кинопутешественников”, “Очевидное-невероятное”.
Важно не путать культурно-просветительскую функцию с образовательной функцией, поскольку к последней относятся всевозможные регулярные публикации и циклы передач с дидактическим материалом. Например, изучение английского языка при помощи публикаций в журналах “Англия” и “Америка”, инструктивные публикации в газетах на темы: “Как стать рекламным агентом”, “Как работать секретарем-диспетчером на домашнем телефоне”. Вспомните широкое распространение в нашей стране учебного телевидения (некогда на ЦТ существовала даже Главная редакция учебных программ). Впрочем, во всем мире существуют различные радио- и телевизионные университеты, в том числе платные, которые высылают своим слушателям тексты лекций и контрольные задания, а при успешном окончании курса даже выдают диплом.
рекреационная, репродуктивная, экономическая и др
Семья представляет собой социальный институт, наделенный различными функциями, которые постепенно изменялись в историческом развитии.
Функции семьи в обществознании делят на основные и вторичные. Основные функции представлены на всех этапах развития семьи, роль вторичных функций возрастала или уменьшалась в разные исторические периоды.
Следует понимать, какие функции выполняет семья в обществе. Основными функциями семьи являются репродуктивная, воспитательная и хозяйственно-экономическая функции.
Репродуктивная функция
Репродуктивная функция отвечает за биологическое воспроизводство населения (деторождение) и является одной из важнейших функций. Так же репродуктивная функция регулирует сферу сексуальных отношений супругов, которая является важной для гармоничных и здоровых отношений. В основе репродуктивной функции должны учитываться индивидуальные запросы и права каждого из супругов.
Социальная политика большинства стран мира направлена на поддержку родительства как цели создания семьи.
Сегодняшняя демографическая ситуации характеризуется следующими аспектами:
- непрекращающимся падением рождаемости в индустриально развитых странах, как следствие – не обеспечение воспроизводства населения;
- старением населения в индустриально развитых странах при тенденции увеличения продолжительности жизни граждан;
- абсолютным и относительным сокращением части трудоспособного населения.
В российской семье так же наблюдается снижение рождаемости из-за наличия социальных и экономических проблем, с которыми сталкивается наше общество в последние десятилетия.
На снижение рождаемости влияет множество факторов, среди которых — нерешенность жилищной проблемы, низкий уровень жизни семьи, рост безработицы, особенно среди женщин, алкоголизм членов семьи и другие. Решение всех этих проблем требует выработку грамотной и долгосрочной государственной политики, которая будет направлена на охрану семьи, детства и материнства.
Воспитательная функция
Воспитательная функция (функция социализации или социальные функции семьи) направлена на передачу детям общепризнанных социальных ценностей, обучение детей социальным ролям, признанным в обществе.
Социолог Т. Парсонс отмечал, что первичная социализация, которая осуществляется в семье, положительно влияет на весь последующий процесс включения личности в общественные структуры. Именно с детства ребенок усваивает ценности и нормы, которым потом руководствуется в жизни.
В истории известны факты, когда роль первичной социализации возлагали на государство (система общественного воспитания в СССР и культурная революция в КНР, кибуцы в Израиле и социалистические эксперименты в Швеции). Однако все эти попытки показали свою несостоятельность и неэффективность.
Нельзя оставить без внимания факты негативной социализации в неблагополучных семьях. В России особого внимания требуют проблемы беспризорничества, алкоголизма и наркомании в семье, малолетней преступности и детской проституции.
Хозяйственно-экономическая функция
Хозяйственно-экономическая функция семьи связана с ведением домашнего хозяйства, организацией семейного потребления, формированием семейного бюджета, разделением обязанностей по дому и т.д.
В доиндустриальном обществе семья представляла собой основу экономической ячейки общественной жизни. С переходом к индустриальной стадии развития, данная сторона семьи (точка зрения) минимизируется, семья превращается из производительной ячейки общества в потребительскую. Члены семьи должны теперь больше работать вне дома, чтобы получать средства для покупки количественно и качественно возрастающего набора товаров и услуг.
Важно отметить, что занятость в общественном производстве одних членов семьи является условием обеспечения жизнедеятельности других (детей, инвалидов, стариков и других). В каждой семье происходит взаимный обмен услугами, именно поэтому необходимо разделение домашних обязанностей между членами семьи.
Так же в хозяйственно-экономическую (бытовую) функцию семьи входит передача имущества и финансовых сбережений детям по наследству. Если в советское время этот аспект не был отражен в законе, то в сегодняшней российской правовой системе он обрел легитимность и отражение в законодательстве.
Функция эмоционального и духовного общения
Функция эмоционального и духовного общения является одной из основных функций, т.к. в семье человек получает помощь и поддержку, удовлетворяет свои потребности в эмоциональном общении (коммуникации) и взаимопонимании. Если в семье не хватает тепла, любви и взаимопонимания, то в этой семье чаще будут проявляться поведенческие и эмоциональные трудности.
Семья обеспечивает эмоциональную стабильность не только своих членов, но еще и тех людей, с которыми она взаимодействует. Совместное проведение досуга членов семьи усиливает их сплоченность, способствует пониманию друг друга.Благодаря данной функции в значительной степени создаются благоприятные условия для реализации целей, поставленных семьей.
Функция эмоционального и духовного общения реализуется более успешно, если семья поддерживает широкие контакты и дружественные отношения со своими родственниками (бабушками, дедушками, дядями, тетями, племянниками и т.д.)
Вторичные функции семьи
К вторичным функциям семьи относят статусную функцию, функцию первичного социального контроля, досуговую функцию семьи.
Статусная функция связанна с тем, что принадлежность к семье позволяет человеку подтвердить и закрепить занимаемые им позиции (традиционное общество), либо даже продвинуться в социальной иерархии (современное общество). В некоторых странах наличие семьи служит фактором уважения и престижа не только в глазах общества, но и в собственном понимании.
Функция первичного социального контроля регламентирует поведение семьи через взаимную ответственность и обязательства в отношениях между ее членами, с учетом возраста, занимаемого места в структуре семьи и выполняемых ролей. В случаях нарушения членом семьи общепринятых социальных норм первичный контроль семьи поддерживается правами и моральными санкциями общества.
Досуговая (рекреационная функция — заключается в обеспечении отдыха, организации досуга членов семьи) функция обеспечивает организацию досуга в семейной группе, совместное времяпрепровождение членов семьи на основе взаимных интересов.
Этот перечень функций не является исчерпывающим, он может быть продолжен, однако все другие функции будут, в той или иной степени, модификациями уже рассмотренных.
реактивная функция — 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
Существует множество замечательных руководств, в которых объясняются принципы, лежащие в основе реактивных функций, но я никогда не понимал их смысла, когда только начинал, поэтому я просто приведу примеры, которые вы можете использовать. экстраполировать принципы из.
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
, order
или 9002 3 консервация . Если вы не знаете, как создать такую сводную таблицу с 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()
для обновления выходной таблицы и заголовка только при нажатии кнопки обновления.