在R中如何提取矩阵维度名并将其存入单独的向量中?
实现方法
你可以直接用R内置的colnames()函数提取shinyMatrix输入矩阵的列名,只需在原有逻辑的基础上新增少量代码即可,修改后的完整可运行代码如下:
library(shiny) library(shinyMatrix) m <- matrix(runif(2), 1, 2, dimnames = list(c("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 = TRUE, 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",ylab="Values")}) # 原有提取矩阵值的逻辑 oe1 <- reactive({ req(input$sample) input$sample }) observeEvent(oe1(),{sample.R <<- oe1()}) # 新增:提取列名存为单独向量 col_names <- reactive({ req(input$sample) colnames(input$sample) }) # 同步列名到全局环境,控制台输入sample_colnames即可查看 observeEvent(col_names(),{sample_colnames <<- col_names()}) } shinyApp(ui, server)
修改后启动App,你可以随时修改矩阵的列名、增减列,RStudio全局环境中的sample_colnames会实时同步最新的列名向量;如果是在App内部做后续计算,直接调用col_names()这个响应式对象即可获取当前最新的列名。
内容的提问来源于stack exchange,提问作者Curious Jorge - user9788072
相关产品推荐
相关产品推荐

