使用输入生成具有n个向量的data.frame
我很难理解为什么“testTable2”不起作用(参见下面的代码),而如果我手动将值添加到数据帧中,则没有问题。请看一看,让我知道我在哪里搞砸了,或者告诉我正确的方向。非常感谢使用输入生成具有n个向量的data.frame,r,shiny,R,Shiny,我很难理解为什么“testTable2”不起作用(参见下面的代码),而如果我手动将值添加到数据帧中,则没有问题。请看一看,让我知道我在哪里搞砸了,或者告诉我正确的方向。非常感谢 library(shiny) ui <- fluidPage( # Application title titlePanel("test"), # Sidebar sidebarLayout( sidebarPanel(
library(shiny)
ui <- fluidPage(
# Application title
titlePanel("test"),
# Sidebar
sidebarLayout(
sidebarPanel(
sliderInput("n",
"Number",
min = 1,
max = 10,
value = 5)
),
# Show table
mainPanel(
tableOutput("testTable1"),
tableOutput("testTable2")
)
)
)
# Define server logic
server <- function(input, output) {
#generate some vectors using input$n
vec1<-reactive({
rnorm(input$n,mean=0,sd=1)
})
vec2<-reactive({
rnorm(input$n,mean=1,sd=1)
})
vec3<-reactive({
rnorm(input$n,mean=10,sd=0.5)
})
vec4<-reactive({
rnorm(input$n,mean=3,sd=5)
})
vec5<-reactive({
rnorm(input$n,mean=-1,sd=2)
})
#create a table manually
output$testTable1<-renderTable({
data.frame(vec1(),vec2(),vec3(),vec4(),vec5())
})
#add vectors to a table using an input
output$testTable2<-renderTable({
data.frame(sapply(paste0("vec",1:input$n),get()))
})
}
# Run the application
shinyApp(ui = ui, server = server)
库(闪亮)
ui动态访问您可以使用的反应式函数-
output$testTable2<-renderTable({
data.frame(sapply(paste0("vec",1:input$n),function(x) get(x)()))
})
输出$testtable2tanks!太好了!。您能否提供一些资源/书籍/网站,让我了解更多关于Shiny的信息。到目前为止,我所看到的一切都没有提到如何在反应对象中调用函数。干杯看一看。这是一本免费的书,通常推荐用于学习。请不要为仅与R相关的问题添加rstudio
标记。rstudio
标记是为与rstudio IDE相关的问题保留的。
library(shiny)
ui <- fluidPage(
# Application title
titlePanel("test"),
# Sidebar
sidebarLayout(
sidebarPanel(
sliderInput("n",
"Number",
min = 1,
max = 10,
value = 5)
),
# Show table
mainPanel(
tableOutput("testTable1"),
tableOutput("testTable2")
)
)
)
# Define server logic
server <- function(input, output) {
#generate some vectors using input$n
vec1<-reactive({
rnorm(input$n,mean=0,sd=1)
})
vec2<-reactive({
rnorm(input$n,mean=1,sd=1)
})
vec3<-reactive({
rnorm(input$n,mean=10,sd=0.5)
})
vec4<-reactive({
rnorm(input$n,mean=3,sd=5)
})
vec5<-reactive({
rnorm(input$n,mean=-1,sd=2)
})
#create a table manually
output$testTable1<-renderTable({
data.frame(vec1(),vec2(),vec3(),vec4(),vec5())
})
#add vectors to a table using an input
output$testTable2<-renderTable({
data.frame(sapply(paste0("vec",1:input$n),function(x) get(x)()))
})
}
# Run the application
shinyApp(ui = ui, server = server)