小编JDG*_*JDG的帖子

带有客户端处理(服务器 = F)的 Shiny 应用程序中的 DT 编辑抛出 JSON 错误

我有一个 Shiny Server 应用程序,用户可以在其中编辑数据表,然后相应地更新一些反应性摘要统计信息。我在一个相当慢的框架上托管这个应用程序,这就是为什么我想使用客户端处理进行 DT 渲染,即server = F传递给DT::renderDataTable. 让我分解我的问题的要点:

  • 代码在server = T通过时完全可操作。

  • 当传递 时server = F,当用户在 DT 中编辑单元格时,浏览器会抛出以下错误消息:

DataTables 警告:table id=DataTables_Table_5 - JSON 响应无效。有关此错误的更多信息,请参阅 http://datatables.net/tn/1

有趣的是,当这个错误窗口被关闭时,依赖摘要统计信息会根据编辑正确更新,并且 Shiny 应用程序继续。因此,除错误外,一切正常。我应该注意到,我访问了错误中提到的网站,但没有变得更聪明。

下面可重现的例子:

library(shiny)
library(DT)

dt = data.frame(V1 = c(1,2), V2 = c(3,4))

server <- function(input, output, session) {

val = reactiveValues(mat = data.table(dt))

output$testDT = renderDataTable({
            DT::datatable(val$mat, editable = TRUE)
}, server = FALSE)

proxy = dataTableProxy('testDT')

observeEvent(input$testDT_cell_edit, {

  info = input$testDT_cell_edit

  str(info) …
Run Code Online (Sandbox Code Playgroud)

json r shiny shiny-server dt

8
推荐指数
1
解决办法
875
查看次数

R/Plumber:通过 Nginx 反向代理重新路由 Swagger UI

背景

我有一个远程服务器,通过 Plumber 在该服务器上运行 R API 服务。从我可以从外部调用我的服务的意义上来说,它是完全可操作的。

我正在使用 Ubuntu/Nginx 反向代理设置。Plumber 服务正在侦听端口 1163。我随后实现了以下 Nginx 重新路由,以便 API 侦听https://server.net/API/

location /API/ {
 proxy_pass http://localhost:1163/;
 proxy_redirect http://localhost:1163/ $scheme://$host/;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常。现在,默认情况下,Swagger UI 会监听

http://127.0.0.1:1163/__swagger__/
Run Code Online (Sandbox Code Playgroud)

由于上面的配置,这意味着我可以成功访问 Swagger UI

https://server.net/API/__swagger__/
Run Code Online (Sandbox Code Playgroud)

问题

我想配置 Nginx 以便 Swagger UI 监听https://server.net/API/documentation/。我尝试了以下嵌套 Nginx 配置:

location /API/ {
 proxy_pass http://localhost:1163/;
 proxy_redirect http://localhost:1163/ $scheme://$host/;

 location /API/documentation/ {
 proxy_pass http://localhost:1163/__swagger__/;
 proxy_redirect http://localhost:1163/__swagger__/ $scheme://$host/;
 }

}
Run Code Online (Sandbox Code Playgroud)

现在,在浏览器中输入所需的 URL https://server.net/API/documentation/时,我检索 Swagger 界面,但它返回以下错误代码:

招摇错误

显然,Nginx 重定向期间解析了错误的 swagger URL。考虑到 url 应该说明这一点,这一点很清楚

https://server.net/API/swagger.json?schemes=https&host=server.net&path=/API/
Run Code Online (Sandbox Code Playgroud)

代替

http://petstore.swagger.io/v2/swagger.json
Run Code Online (Sandbox Code Playgroud)

如何确保在 …

r nginx swagger plumber

5
推荐指数
0
解决办法
1390
查看次数

省略 NA 的高效逐行字符串连接

我有data.table以下示例结构:

dt = data.table(
  V1 = c('One', 'Two', 'Three'),
  V2 = c('Red', NA, NA),
  V3 = c('Cat', NA, 'Dogs')
)

> dt
      V1   V2   V3
1:   One  Red  Cat
2:   Two <NA> <NA>
3: Three <NA> Dogs
Run Code Online (Sandbox Code Playgroud)

我想将元素按行串联到一个新列中,该列省略NA

> dt
      V1   V2   V3          V4
1:   One  Red  Cat One Red Cat
2:   Two <NA> <NA>         Two
3: Three <NA> Dogs  Three Dogs
Run Code Online (Sandbox Code Playgroud)

在这个简单的示例中,我当然可以转置对象并执行lapply(.SD, paste(x[!is.na(x)])),但是转置的计算成本太高。我也不想在第二步中删除NAs那些被强迫的内容。character简而言之,我欢迎任何高性能解决方案。

string r na data.table

4
推荐指数
1
解决办法
128
查看次数

标签 统计

r ×3

data.table ×1

dt ×1

json ×1

na ×1

nginx ×1

plumber ×1

shiny ×1

shiny-server ×1

string ×1

swagger ×1