我有一个表单有两个不同的动作 . 第一个是上传文件,第二个是示例 . 当我点击其中一个我的应用程序做了什么,但服务器保存点击的信息,没有变化,直到我点击其他按钮 .
例如,如果我单击上传按钮而不选择文件,它什么都不做,但如果我选择一个文件,服务器上传文件并开始处理它而不点击上传按钮,因为服务器保存了过去的点击 . 我想知道是否可以重置每次点击的值 .
的index.html
<form class="span12 menu-med-upload">
<div class="row-fluid">
<h3>Upload File .fasta</h3>
<div class="custom-input-file btn btn-inverse">
<input type="file" size="1" name="fileFasta" id="fileFasta" class="input-file" />
Select File
</div>
<img src="/static/img/check.png" class = "custom-input-check">
<div class="span12"></div>
<textarea class = "span12" rows = "10" style="resize: none;" id="textAreaFasta">
</textarea>
</div>
<button id="uploadFasta" type="button" class="btn btn-inverse action-button" >Upload File</button>
<button id="exampleFasta" type="button" class="btn btn-inverse action-button" >Example</button>
</form>
Server.R
shinyServer(function(input, output, session) {
# Create a reactiveValues object, to let us use settable reactive values
values <- reactiveValues()
# To start out, lastAction == NULL, meaning nothing clicked yet
values$lastAction <- NULL
# An observe block for each button, to record that the action happened
observe({
if (input$exampleFasta != 0) {
values$lastAction <- 'example'
}
})
observe({
if (input$uploadFasta != 0) {
values$lastAction <- 'upload'
})
})
# Then you can use values$lastAction in reactive expressions, outputs, etc.
output$table <- renderText({
if (is.null(values$lastAction))
return(NULL)
if (identical(values$lastAction, 'upload'))
return(myRenderTable(matrixProtein(), "table", nameFile))
if (identical(values$lastAction, 'example'))
return(myRenderTable(matrixProteinExample(), "table", ""))
stop("Unexpected value for lastAction: ", values$lastAction)
})
})
注意:Joe Cheng编写了server.R的代码,我复制到这个例子中工作到shiny Change data input of buttons
2 回答
没有可重复的例子,这个问题更难回答 . 但是,我从反应上下文中得到了答案 . 这意味着每次更改文件元素时,输出也会更改 . 第二个问题是每个按钮的代码只在连续多次单击时被调用一次,这意味着如果您未能单击示例,则不会发生上载(在修复
isolate
问题之后)按钮第一 .现在它的工作原理我相信OP想要的 .
这是固定的 index.html :
这是固定的 server.R :
请注意,这取决于Bioconductor包
Biostrings
和CRAN包xtable
. 我不知道原始函数是做什么的,但是这段代码采用FASTA格式的文件,读取序列,翻译成蛋白质序列,然后给出一个字母表频率表 .还要注意我不知道
myRenderTable
的其他参数是什么意思,所以我忽略了它们 .你想要孤立 . 所以在R控制台中键入它