是否有可能在不触发反应的情况下更新输入?
下面我举了一个最小的例子。目的是在不改变主面板中的值的情况下更新滑块。当滑块再次更改时,应再次将其转发给相关反应。
问题和潜在用例类似于以下问题:R 闪亮 - 更新***输入和反应性和更新 SelectInput可能存在问题而没有触发反应性?. 与这些问题类似,在我的用例中有一个依赖于两个输入的反应。我想根据另一个更新这些输入中的一个,这导致反应性计算两次。然而,这两个问题都通过选择性地更新输入来解决这个问题。这在我的用例中是不可能的,因为我想通过更新输入向用户显示一些信息。
如果没有可能在不触发反应的情况下更新输入,我会问一个关注我的用例的后续问题。
例子
library(shiny)
ui <- fluidPage(
titlePanel("Update Slider - Isolate reaction?"),
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30),
actionButton("set1", "set slider 'bins'$value=20"),
actionButton("set2", "'ISOLATED' set slider 'bins'$value=20 ")
),
mainPanel(
textOutput("sliderValue")
)
)
)
# Define server logic
server <- function(input, output, session) {
output$sliderValue <- renderText(input$bins)
observeEvent(input$set1,{
updateSliderInput(session,"bins",value=20)
})
observeEvent(input$set2,{
## Is there any possibility …Run Code Online (Sandbox Code Playgroud) 我想总结data.table中的几个变量,宽格式输出,输出可能作为每个变量的列表.由于其他几种方法都不起作用,我试图做一个外部的lapply,给出变量的名称作为字符向量.我希望使用= FALSE传递这些内容.
carsx=as.data.table(cars)
lapply( list(speed="speed",dist= "dist"), #error object 'ansvals' not found
function(x) carsx[,list(mean(x), min(x), max(x) ), with=FALSE ] )
Run Code Online (Sandbox Code Playgroud)
由于这不起作用,我尝试了更简单的方法,没有lapply.
carsx[,list(mean("speed"), min("speed"), max("speed") ), with=FALSE ] #error object 'ansvals' not found
Run Code Online (Sandbox Code Playgroud)
这也不起作用.有没有办法做这样的事情?这种'与'的行为是否需要?(我知道?data.table只提到选择列,但在我的情况下,能够转换它们也很有用)
当= = FALSE时,j是要选择的名称或位置的向量,类似于data.frame.with = FALSE在data.table中通常很有用,可以动态选择列.
编辑我的目的是针对不同的变量以宽格式获取每组的摘要.我尝试扩展以下内容,它仅适用于一个变量,用于变量列表.
carsx[,list(mean(speed), min(speed), max(speed) ) ,by=(dist>50)
Run Code Online (Sandbox Code Playgroud)
可悲的是SO不允许我发布我的另一个问题.我在那里描述了我想要一个类似的输出:
lapply( list(speed="speed",dist= "dist"),
function(x) do.call("as.data.frame", aggregate(cars[,x], list(class=cars$dist>50), FUN=summary) ) )
Run Code Online (Sandbox Code Playgroud)
预期输出将是这样的:
$speed
V1 V2 V3
1: FALSE 12.96970 4 20
2: TRUE 20.11765 14 25
$dist
V1 V2 V3
1: FALSE 12.96970 4 20 …Run Code Online (Sandbox Code Playgroud) 另一个与pander(+ knitr)可重现的错误:当我尝试平移列表时,我无法创建PDF文件 - 它似乎发生在将表或data.frame放入列表中时.如果列表中只有向量,则PDF编译但看起来很难看.
我在Windows上使用pander 0.5.1,knitr 1.7,R 3.1.1,Miktex + RStudio.
Doesn't work:
```{r, eval=FALSE}
pander(list(cor=cor(cars) ) )
```
Run Code Online (Sandbox Code Playgroud)
错误:
output file: Preview-e905ccd5f1a.knit.md
! Undefined control sequence.
l.246 \textbf{cars}: {[}1{]} ``\n
pandoc.exe: Error producing PDF from TeX source
Fehler: pandoc document conversion failed with error 43
Zus?tzlich: Warnmeldung:
Ausf?hrung von Kommando '"C:/Program Files/RStudio/bin/pandoc/pandoc" Preview-e905ccd5f1a.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash-implicit_figures --output Preview-e905ccd5f1a.pdf --template "C:\Users\jbothe\Documents\R\win-library\3.1\rmarkdown\rmd\latex\default.tex" --highlight-style tango --latex-engine pdflatex --variable "geometry:margin=1in"' ergab Status 43
Ausf?hrung angehalten
Run Code Online (Sandbox Code Playgroud)
当我在控制台中使用pander并手动复制并粘贴它时,它会编译:
* **cor**:
--------------------------
speed dist
----------- …Run Code Online (Sandbox Code Playgroud) 我想过滤日期的data.table - 给定开始日期和结束日期,我想拥有包含给定日期的所有行.
现在我的问题:它在我使用固定日期时有效,但是当我想将日期存储在外部变量中时它会返回一个空表.任何提示?
dt = data.table(begin=as.Date('2014-01-01'):as.Date('2014-01-10'),
end=as.Date('2014-01-01'):as.Date('2014-01-10')+c(1,1,1,2:8),
x=c('A','B','C','D','E','J','J','J','J','J'))
dt[,`:=`(begin_idate=as.IDate(begin, origin='1970-1-1'),
end_idate=as.IDate(end, origin= '1970-1-1'))]
dt[as.Date('2014-01-09')>begin_idate & as.Date('2014-01-09')<=end_idate ] # works
x=as.Date('2014-01-09')
dt[x>begin_idate & x<=end_idate ] #doesnt' work - empty data.table
Run Code Online (Sandbox Code Playgroud) 是否有可能在数据列中排序data.table,同时最后放置一个特殊行(残余类别)(基于另一列的标签)?
DT <- data.table (a =c("a", "sd", "set", "c", "s", "REST", "sde", "de"),
b=c(5,1:4, 2.5, 1:2))
Run Code Online (Sandbox Code Playgroud)
预期的产出会是这样的
a b
1: sd 1.0
2: sde 1.0
3: set 2.0
4: de 2.0
5: c 3.0
6: s 4.0
7: a 5.00
8: REST 2.5
Run Code Online (Sandbox Code Playgroud)
我在下面给出了一个答案,但我想知道是否有一种可能没有rbind.这很复杂,我想这也会复制整个data.table;)
我有一个闪亮的模块,它使用反应值来存储其内部状态。在下面的示例中,这仅用于输出输入更改的数字,但我的实际用例更复杂。
我现在想创建一个函数,该函数可用于将这些模块之一设置为另一个模块的状态,包括内部状态 - 或更一般地说:我想创建一个函数 updateModule,它也可以更新内部状态。
所以我的问题是:如何从外部访问和更改模块的内部反应值?
另一个与我的特殊目的相关的问题是:如何在更新输入时防止内部反应值更新 - 或者如何重置它(回到主要问题?
目前,我知道两种可能的解决方法:
但是,我很想知道是否有更直接的解决方案,也因为我要更新的内部结构是更复杂的列表。
#Problem: How to change reactiveValues from the outside?
library(shiny)
moduleUI <- function(id, label=id,min = 0,max = 100,value = 30){
ns <- NS(id)
fluidRow(
column(width=9,
sliderInput(ns("sl"), label=label, min=min, max=max, value=value)
),
column(width=2,
textOutput(ns("changesCount") )
)
)
}
synchModule<-function(session, targetModule, oldModule){
ns<-NS(targetModule)
updateSliderInput(session,ns("sl"),value=oldModule() )
##Accessing and changing internal Value of targetModule??
}
module<- function(input, output, session){ …Run Code Online (Sandbox Code Playgroud)