我想更改我的Shinyapp生成的input$value
的值。为此
我尝试过:
observeEvent(input$click,
input$vis$start[1]<- "2019-01-09T03:00:00.000Z"
)
但是我的答复是:
Warning: Error in $<-.reactivevalues: Attempted to assign value to a read-only reactivevalues object
[No stack trace available]
所有代码:
library(timevis)
library(shiny)
data <- data.frame(
start=c("2019-01-10","2019-01-11"),
end = c("2019-01-11","2019-01-12")
)
ui <- fluidPage(
br(),
br(),
timevisOutput("vis"),
tableOutput("table"),
actionButton("click","da")
)
server <- function(input,output){
output$uno <- renderTimevis(
timevis(data,options=list(editable=TRUE,stack=FALSE))
)
observeEvent(input$click,
input$vis_data$start[1]<- "2019-01-09T03:00:00.000Z"
)
output$table <- renderTable(
input$vis_data
)
}
shinyApp(ui,server)
答案 0 :(得分:1)
虽然@anotherfred对这个问题的讨论是正确的,但在此并没有得到完全的回答。
考虑这个最小的应用程序:
char (*a)[4];
控制台:
library(shiny)
ui <- fluidPage()
server <- function(input, output, session) {
print(input)
}
shinyApp(ui, server)
您将在控制台中看到...
...
$readonly
[1] TRUE
$ns
function (x)
x
<bytecode: 0x000000000c417de0>
<environment: namespace:base>
具有input
属性。当然,从理论上讲,属性可以被覆盖。
请参阅此处的讨论: https://github.com/rstudio/shiny/issues/167#issuecomment-108412945
这将导致:read-only
。我记得我在一段时间前尝试过,并且有效。不确定它是否仍然有效,但实际上并不那么重要。因为,这当然不是最佳实践,并且在大多数情况下,会有更好的方法来实现所需的输出。
在您的情况下,我将改用reactactiveValue,并使attr(input, "readonly") <- FALSE
中的数据具有反应性。如果添加可复制的示例,我们可以对其进行详细讨论。我看到了与评论中提到的Jonny Phelps相同的输出(已加载timevis库,...)