我使用Shiny GUI R包.我正在寻找一种在按下actionButton后显示"loading ..."等消息的方法.该函数需要几分钟才能执行,因此我需要以某种方式通知用户按钮实际触发了某个事件.现在server.R代码如下所示:
DATA <- reactive({
if(input$DownloadButton>0) {
RunDownload()
} else {
NULL
}
})
output$Download <- renderText({
if(NROW(DATA())>0) {
paste0(Sys.time(),": ",NROW(DATA()), " items downloaded")
} else {
''
}
})
Run Code Online (Sandbox Code Playgroud)
actionButton()是一种从互联网下载数据的功能.input$DownloadButton是actionButton.因此,在按下按钮后,用户等待几分钟,然后才会看到一条消息,说下载成功.我想在按下actionButton之后显示消息"正在加载...",然后paste0(Sys.time(),": ",NROW(DATA()), " items downloaded")在执行结束时显示另一条消息.
在一个函数中,我经常需要使用如下代码:
which(x==1)[1]
which(x>1)[1]
x[x>10][1]
Run Code Online (Sandbox Code Playgroud)
哪里x是数字向量.summaryRprof()表明我花了80%以上的时间在关系运营商身上.我想知道是否有一个函数只进行比较,直到TRUE达到第一个值来加速我的代码.For循环比上面提供的选项慢.
我正在尝试为java实体添加国际化(多语言)支持.在向每个新字段添加翻译时,我对所有选项都开放,尽可能少的样板代码.我不仅限于JPA,也可以使用hibernate注释.在最坏的情况下,普通sql也适合.可能有一些我没有找到的现成库.它不应该遵循我下面描述的想法.
理想情况下,我需要数据库看起来像这样:
i18n
+------+--------+------+
| id | locale | text |
+------+--------+------+
| 1 | en | foo |
+------+--------+------+
| 1 | de | bar |
+------+--------+------+
| 2 | en | foo2 |
+------+--------+------+
| 2 | de | bar2 |
+------+--------+------+
parent
+------+------+
| id | text |
+------+------+
| 99 | 1 |
+------+------+
| 100 | 2 |
+------+------+
Run Code Online (Sandbox Code Playgroud)
i18n是应该只包含3列的表:id,locale和text.表parent有一列text(如果只有单个字段需要i18n,否则需要更多列),其中包含来自的值i18n.id.我在Parent类中尝试了以下映射:
@ElementCollection …Run Code Online (Sandbox Code Playgroud) Shiny(R GUI)用<替换<和> 和> 在标签$ script()中,如何解决?我需要在我的javascript中使用更多和更少的标志.
我在R中用Shiny包遇到了困难
我试图理解为什么server.R中的"#Option 1"不起作用,但评论"#Option 2"确实有效.在"#Option 1"处于活动状态时,尝试输入随机字符串并按下按钮.第一次用"abc"替换文本框中的值,但下次所有值都没有.
在我的理解中,val()已经依赖于输入$ change,所以它必须在每次按下按钮时重新执行,而且"#Option 2"被包装到isolate()中,因此它不会添加任何反应性.
实际上,当使用"#Option 1"时,该值实际上会部分更改为"abc".打开Google Chrome的inspect元素后,您可以看到"#Option 2"更改每次按下按钮时的值,"#Option 1"也会将值更改为"abc",但屏幕仅在按钮时更新是第一次按下.
这是代码:
server.R
require(shiny)
shinyServer(function(input, output) {
val <- reactive({
if(input$change>0) {
# Option 1
'abc'
# # Option 2
# isolate({
# paste('abc',input$txt,"")
# })
} else {
''
}
})
output$textbox <- renderUI({
textInput("txt","Text",val())
})
})
Run Code Online (Sandbox Code Playgroud)
ui.R
require(shiny)
require(shinyIncubator)
shinyUI(pageWithSidebar(
headerPanel('Test'),
sidebarPanel(
uiOutput("textbox"),
actionButton("change", "Change")
),
mainPanel(
)
))
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种通用的方法来更改省略号内的参数值并将其传递给另一个函数.我知道一个丑陋的解决方案,看起来像这样:
test <- function(...) {
a <- list(...)
a[['y']] <- 2
return(eval(parse(text=paste0('identical(',paste(unlist(a),collapse=','),')'))))
}
test(x=1,y=1)
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想避免将...转换为列表,然后使用eval().是否有可能以某种方式引用...内部的参数并改变它的价值?
我用parSapply()从parallel包河,我需要对大量的数据进行计算.即使并行执行也需要数小时,因此我决定定期将结果写入集群中的文件write.table(),因为当内存不足或其他一些随机原因导致进程崩溃时,我想继续计算把它停下来.我注意到我得到的一些csv文件行只是在中间切割,可能是由于多个进程同时写入文件.有没有办法在write.table()执行时暂时锁定文件,因此其他集群无法访问它,或者唯一的出路是从每个集群写入单独的文件然后合并结果?
我有2个数字向量,一个存储值来计算最大值,滚动窗口的另一个长度用于计算滚动基础上的最大值.下面是一些示例代码.一般来说,我正在尝试加速system.time中的代码.是否有一些现成功能或矢量化方式来做同样的事情?
a <- rep(1:5,20000)
set.seed(123)
b <- rep(sample(1:50),2000)
system.time({
out <- vector(mode='numeric', length=NROW(a))
for(i in seq(a)) {
if (i-b[i]>=0) out[i] <- max(a[(i-b[i]+1):i])
else out[i] <- NA
}
})
Run Code Online (Sandbox Code Playgroud) 我有一些JSON代码,格式如下:
[
{ "abc ": "d ef", "g": "h i", "jk lm no": "pq", "r st": "uvw xyz" },
{ "!1 2": " 3", "4 ": "5 6 7", " 8 ": "9 abc", "def": "hi "NAME" jk" },
...
]
Run Code Online (Sandbox Code Playgroud)
我需要在"NAME"中的引号前添加反斜杠才能正确解析此JSON.所以我需要上面的字符串看起来像这样:
[
{ "abc ": "d ef", "g": "h i", "jk lm no": "pq", "r st": "uvw xyz" },
{ "!1 2": " 3", "4 ": "5 6 7", " 8 ": "9 abc", "def": "hi \"NAME\" jk" }, …Run Code Online (Sandbox Code Playgroud)