r - 为每行插入一个数字输入 - R Shiny

标签 r textbox shiny numeric-input

我有一个生成大矩阵的复杂代码,但在这里我附上一个简单的、可重现的示例,以便清楚地解释我想要的内容: 代码如下:

# ui.R

library(shiny)
shinyUI(
  mainPanel("Table Output",
           (tableOutput("My_table")))
        )   

# server.R

library(shiny)
 shinyServer(function(input, output, session) {
  My_table = matrix( 
   c(1:100), 
     nrow=20, 
     ncol=5)
  output$My_table <- renderTable(My_table)
 })

我的目标是在表格的左侧和右侧放置一个小文本框,表格的每一行一个。 在我的想法中,我需要能够在左侧文本框中写入一个数字,最终也在右侧文本框中写入一个数字,然后根据手动插入的数字在该行上进行一些计算。 当然,表格的长度会有所不同,因此我需要使用类似 dim(My_table) 的东西,以便为每一行正确放置一个小文本框,一个在左侧,一个在右侧。 我想使用 Rshiny 的 numericInput 函数,但我不知道如何在这种情况下应用。

我只能使用 R Shiny 函数来做到这一点还是我必须使用 html ui.R ?

最佳答案

您可以将矩阵与用于数字输入的 HTML 标签的两个字符串向量(下面我的代码中的 input1 和 input2)绑定(bind),并添加 sanitize.text.function 来评估 HTML 标签按原样(而不是字符串)。

例如:

shiny::runApp(list(
  ui = basicPage(
    tableOutput("My_table")
  ),
  server = function(input, output, session) {

    My_table = matrix( 
      c(1:100), 
      nrow=20, 
      ncol=5)

    output$My_table <- renderTable({
      input1 <- paste0("<input id='a", 1:nrow(My_table), "' class='shiny-bound-input' type='number' style='width: 50px;'>")
      input2 <- paste0("<input id='b", 1:nrow(My_table), "' class='shiny-bound-input' type='number' style='width: 50px;'>")
      cbind(input1, My_table, input2)
    }, sanitize.text.function = function(x) x)

  }
))

关于r - 为每行插入一个数字输入 - R Shiny,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22221089/

相关文章:

java - GWT-SuggestBox 作为文本框?

R Shiny - 在侧边栏面板外显示静态文本

r - 如何将shinyalert输入字段捕获为变量

r - 防止 ggplot2 降低 x 轴水平

r - 在 R 中展平嵌套 JSON

php - 将新行从 PHP 替换为 JavaScript

r - Shiny 每次按下按钮都会生成随机值

r - ggplot2 coord_polar 在使用填充时保留顺序

r - 如何从命令窗口中删除所有键入的命令?

javascript - 如何限制特殊字符和 (/,*,+) only