Я чувствую, что этот вопрос относится к общему запросу о том, как манипулировать данными в контексте Shiny, но мой конкретный вопрос связан с использованием функций ввода/вывода в dplyr
. Сейчас я столкнулся с двумя проблемами.Использование свинца/задержки в приложении Shiny
Первой проблемой является определение переменных в наборе данных, которые были lead/lag
. Я использую подход dplyr
, где я называю отстающую переменную yvar
. CLearly это неверно, так как R не может найти yvar
. Так может ли кто-нибудь рекомендовать способ изменить/создать переменную, чтобы результат был перенесен через блестящее приложение и доступно для вызова?
Вторая проблема заключается в указании количества строк для ввода/задержки переменной Y. В файле ui.R достаточно просто указать поле ввода с позициями ввода/вывода. Но как я могу поместить целое из этого поля ввода в качестве аргумента в функцию lead
?
Вот ui.R:
library(shiny)
library(ggplot2)
library(dplyr)
dataset <- iris
shinyUI(pageWithSidebar(
headerPanel("Iris Data Explorer"),
sidebarPanel(
selectInput('x', 'X', names(dataset), names(dataset)[[2]]),
selectInput('y', 'Y', names(dataset), names(dataset)[[4]]),
selectInput('offset', 'Offset Level of Y', 0:5, 0),
selectInput('species', 'Species', levels(dataset$Species), "virginica")
),
mainPanel(
plotOutput('plot')
)
))
А вот server.R:
library(shiny)
library(ggplot2)
library(dplyr)
shinyServer(function(input, output) {
dataset <- reactive({
iris %>%
filter(Species==input$species)
#%>% mutate(yvar=lead(input$y, paste0(input$offset)))
})
output$plot <- renderPlot({
dataset<-dataset()
p <- ggplot(dataset, aes_string(x=input$x,
#y=yvar)
y=input$y
)) +
geom_point()
print(p)
}, height=500)
})
Я думаю, что это верно. Вам придется протестировать его. –
Фактически использование 'mutate' с динамическими именами тривиально - просто переключитесь на' mutate_' и предоставите именованный вектор с преобразованиями. –
Тогда эта ссылка (что Хэдли была) устарела? Итак, как это должно выглядеть? Ваше описание слишком короткое для меня. –