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