我正在尝试制作一个在不同行上显示多个绘图的Shiny应用程序,并允许用户使用位于图形旁边的radioButtons选择适当的趋势。问题是我无法将电台按钮直接放在图表旁边。
我想:
我的代码:
server.R:
library(shiny)
shinyServer(function(input, output) {
lapply(1:3, function(iter) {
output[[paste0("g",iter)]] <- renderPlot({
set.seed(iter)
xx <- rnorm(10)
yy <- rnorm(10)
plot(xx,yy)
abline(reg=lm(yy~xx), col=2, lwd=ifelse(input[[paste0("radio",iter)]]==1,2,1))
abline(reg=lm(yy~xx+0), col=3, lwd=ifelse(input[[paste0("radio",iter)]]==2,2,1))
})
})
})
ui.R:
library(shiny)
shinyUI(fluidPage(
titlePanel("My loop test"),
fluidRow(
column(6,
lapply(1:3, function(iter) {
plotOutput(paste0("g",iter))
}
)),
column(3,
lapply(1:3, function(iter){
radioButtons(paste0("radio",iter),label = "buttons", choices = list("with intercept"=1,"without intersept"=2),selected = 1)
}
))
)
))
我希望它很清楚。我是Shiny(但不是R)的新手,我仍处于学习曲线的陡峭部分!
谢谢
答案 0 :(得分:3)
也许是这样的:
shinyUI(fluidPage(
titlePanel("My loop test"),
lapply(1:3, function(iter) {
fluidRow(
column(
6,
plotOutput( paste0("g",iter) )
),
column(
3,
radioButtons(
paste0("radio", iter),
label = "buttons",
choices = list("with intercept"=1,"without intersept"=2),
selected = 1)
)
)
})
))
答案 1 :(得分:2)
这是模块的一个很好的用例。我没有让按钮完美排列,但可以通过一些CSS修复:
fluidRow
请注意,splitLayout
还不够,我们必须使用{{1}}