Shiny 从两个单选按钮中读取两列的名称,并将它们的向量放在R中的一个数据帧中
我有一套内置数据。目标是从两个单选按钮中读入两列的名称,然后从所选列生成数据帧。我在这里做了一个可复制的例子 如果你运行Shiny 从两个单选按钮中读取两列的名称,并将它们的向量放在R中的一个数据帧中,shiny,Shiny,我有一套内置数据。目标是从两个单选按钮中读入两列的名称,然后从所选列生成数据帧。我在这里做了一个可复制的例子 如果你运行 output$mytable = renderDataTable(vector1) 或 另外,你会发现每个observeEvents都工作正常,但我被卡住了,无法将这些列放在一起 p.S.1.我知道最后两行会给出一个错误,因为一开始没有vector1和vector2。因此,我提出#让他们发表评论 我需要在另一个地方使用生成的数据帧。这就是为什么我坚持要形成一个数据框架 l
output$mytable = renderDataTable(vector1)
或
另外,你会发现每个observeEvents都工作正常,但我被卡住了,无法将这些列放在一起
p.S.1.我知道最后两行会给出一个错误,因为一开始没有vector1
和vector2
。因此,我提出#让他们发表评论
我需要在另一个地方使用生成的数据帧。这就是为什么我坚持要形成一个数据框架
library(shiny)
vchoices <- 1:ncol(mtcars)
names(vchoices) <- names(mtcars)
runApp(list(
ui = basicPage(
h2('The mtcars data'),
radioButtons(
"column1",
"select columns",
choices = vchoices,
inline = T
),
radioButtons(
"column2",
"select columns",
choices = vchoices,
inline = T
),
dataTableOutput('mytable')
),
server = function(input, output) {
observeEvent(input$column1, {
cols1 <- as.numeric(input$column1)
vector1 <- data.frame(mtcars[, cols1])
names(vector1) <- c("Firstcolumn")
#output$mytable = renderDataTable(vector1)
})
observeEvent(input$column2, {
cols2 <- as.numeric(input$column2)
vector2 <- data.frame(mtcars[, cols2])
names(vector2) <- c("Firstcolumn")
#output$mytable = renderDataTable(vector2)
})
#z <- cbind(vector1, vector2)
#output$mytable = renderDataTable(z)
}
))
库(闪亮)
vchoices如果您想分两步进行,可以使用反应式:
z <- reactive(mtcars[,c(as.numeric(input$column1),as.numeric(input$column2))] )
output$mytable = renderDataTable(z()) # Notice the parenthesis after z
z为什么不直接编写output$mytable@HubertL呢?我想你是对的。我可以使用相同的结构并形成一个数据框架。ThanksI试图编写z=mtcars[,c(as.numeric(输入$column1),as.numeric(输入$column2))]输出$mytable=renderDataTable(z)
,但它给出了一个错误以及操作需要和活动-反应环境。准确!非常感谢。我没有名声,但我投票赞成你的答案。
z <- reactive(mtcars[,c(as.numeric(input$column1),as.numeric(input$column2))] )
output$mytable = renderDataTable(z()) # Notice the parenthesis after z