在R闪亮,如何为输入矩阵生成顺序列标题?

  • 本文关键字:顺序 标题 闪亮 r matrix shiny
  • 更新时间 :
  • 英文 :


当运行下面的MWE代码时,用户可以添加、删除或修改输入矩阵网格中的条目。从这些用户输入生成一个简单的图。

您将看到输入矩阵的默认列标头为1和2。但是,当用户向矩阵中添加数据时(只需单击空列并输入值),如何为新列自动生成顺序列标头呢?因此,添加的第三列的标题标签为3,等等。删除列(通过单击"x";(当前显示在列标头字段中)将导致为其余列生成新的顺序列编号。

注意,通过将下面的matrixInput列(col)规范更改为editableNames = TRUE,用户就可以手动输入列标头。但是,如果自动生成编号的头并将editableNames设置为FALSE,那就好得多了。这些列标头编号将在其他计算中使用。

兆瓦代码:

library(shiny) 
library(shinyMatrix) 
m <- matrix(runif(2), 1, 2, dimnames = list(c("Sample values"), c(1,2))) 
ui <- fluidPage(   
titlePanel("Matrix inputs"),   
sidebarPanel(     
width = 6,     
matrixInput(       
"sample",       
value = m,       
rows = list(extend = FALSE),       
cols = list(extend = TRUE, names = TRUE, editableNames = FALSE, delete = TRUE),
class = "numeric"
)   
),   
mainPanel(     
width = 6,     
plotOutput("scatter")   
) 
) 
server <- function(input, output, session) {   

output$scatter <- renderPlot({
plot(1:ncol(input$sample),
input$sample,
xlab="Nbr of samples",
ylab="Sample values"
)
}) 

} 
shinyApp(ui, server) 

  1. observe服务器的输入矩阵的变化。
  2. 改变矩阵input$sample给出的colnames。我在这里简单地使用了连续的数字,但是你可以提供任何你想要的算法。
  3. updateMatrixInput将新矩阵发送回UI。确保您使用isolate,以避免无休止的更改和刷新循环。
library(shiny) 
library(shinyMatrix) 
initm <- matrix(runif(2), 1, 2, dimnames = list(c("Sample values"), c(1,2)))
ui <- fluidPage(   
titlePanel("Matrix inputs"),   
sidebarPanel(     
width = 6,     
matrixInput(       
"sample",       
value = initm,       
rows = list(extend = FALSE),       
cols = list(extend = TRUE, names = TRUE, editableNames = FALSE, delete = TRUE),
class = "numeric"
)   
),   
mainPanel(     
width = 6,     
plotOutput("scatter")   
) 
) 
server <- function(input, output, session) {
observe({
mm <- input$sample
colnames(mm) <- 1:ncol(mm)
isolate(
updateMatrixInput(session, "sample", mm)
)
})

output$scatter <- renderPlot({
plot(1:ncol(input$sample),
input$sample,
xlab="Nbr of samples",
ylab="Sample values"
)
}) 

} 
shinyApp(ui, server) 

相关内容

  • 没有找到相关文章

最新更新