我正在使用2个输入进行闪亮的vizualization。
资料集:
> est_popai <- data.frame(concat = c("A_1","B_1","C_1","A_2","B_2","C_2","A_1","B_1","C_1","A_2","B_2","C_2","A_1","B_1","C_1","A_2","B_2","C_2","A_1","B_1","C_1","A_2","B_2","C_2"),
variables = c("quantity","quantity","quantity","quantity","quantity","quantity","price","price","price","price","price","price","quality","quality","quality","quality","quality","quality","size","size","size","size","size","size"),
values = round(runif(24, 5.0, 7.5),2)
)
Run Code Online (Sandbox Code Playgroud)
用户界面:
> ui <- fluidPage(
headerPanel(
h1("Combinacao de atributos")
),
sidebarPanel(
selectInput("xcol"," Variavel X", unique(est_popai$variable),
selected = 'price'),
selectInput("ycol"," Variavel y", unique(est_popai$variable),
selected = 'size')
),
mainPanel(
plotOutput("plot1")
)
)
Run Code Online (Sandbox Code Playgroud)
服务器:
> server <- function(input, output) {
selectData <- reactive ({
est_popai[est_popai$variable == input$xcol | est_popai$variable == input$ycol,] %>%
unique() %>%
spread(variable,value)
})
output$plot1 <- renderPlot({
ggplot(data = selectData, aes(x = input$xcol, y = input$ycol)) +
geom_point()
})
}
Run Code Online (Sandbox Code Playgroud)
跑:
> shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
当我运行整个代码时,出现以下错误消息:
警告:中的错误:
data必须是数据帧或可由强制的其他对象fortify(),而不是具有类reactExpr / reactive的S3对象[无可用的堆栈跟踪]
我试图添加as.data.frame()功能没有成功。我已经搜寻了一段时间,有人可以帮助我解决这个错误。
回答
正确执行整个脚本:
错误分为三个部分:
1-我忘了在数据ggplot函数中添加()
data = selectData()2-对象是不同的名字,我忘了这封信
s在variable和value对象3-
aes()假设是aes_string()在ggplot功能
ui <- fluidPage(
headerPanel(
h1("Combinacao de atributos")
),
sidebarPanel(
selectInput("xcol"," Variavel X", unique(est_popai$variables),
selected = 'price'),
selectInput("ycol"," Variavel y", unique(est_popai$variables),
selected = 'size')
),
mainPanel(
plotOutput("plot1")
)
)
server <- function(input, output) {
selectData <- reactive ({
est_popai[est_popai$variables == input$xcol | est_popai$variables == input$ycol,] %>%
unique() %>%
spread(variables,values)
})
output$plot1 <- renderPlot({
ggplot(data = selectData(), aes_string(x = input$xcol, y = input$ycol)) +
geom_point()
})
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
从OP复制粘贴。
请参阅下面更正后的脚本。错误分为三部分:
1-我忘记在数据ggplot函数中添加()
data = selectData()2-这些物体有不同的名称,我忘记了
s字母variable和value物体3-
aes()应该可以aes_string()正常ggplot工作
ui <- fluidPage(
headerPanel(
h1("Combinacao de atributos")
),
sidebarPanel(
selectInput("xcol"," Variavel X", unique(est_popai$variables),
selected = 'price'),
selectInput("ycol"," Variavel y", unique(est_popai$variables),
selected = 'size')
),
mainPanel(
plotOutput("plot1")
)
)
server <- function(input, output) {
selectData <- reactive ({
est_popai[est_popai$variables == input$xcol | est_popai$variables == input$ycol,] %>%
unique() %>%
spread(variables,values)
})
output$plot1 <- renderPlot({
ggplot(data = selectData(), aes_string(x = input$xcol, y = input$ycol)) +
geom_point()
})
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)