我使用shinyMatrix包进行矩阵输入。旅馆运转良好,闪闪发光。 但是当我将它用于四开交互式文档时,它没有显示矩阵输入字段。 下面是我的示例代码。 任何帮助表示赞赏。 谢谢。
---
title: "Test Doc"
format:
html:
page-layout: full
server: shiny
---
```{r,message=FALSE}
library(shiny)
library(shinyMatrix)
```
## Running Code
```{r}
numericInput(inputId = "rt",label = "TestNum",value = 1,min = 0,max = 10,step = 1)
matrixInput(inputId = "mat","testMat",value = matrix(0,3,2),inputClass = "",class = "numeric")
```
```{r}
#| context: server
```
我从来没有听说过shinyMatrix,它似乎是一个非常小的实现,因为它是由一个人开发的,仍处于测试阶段并且几乎没有文档,我猜这更多的是对该人的包开发的练习比一个严肃的工具。
经检查,它使用了一个 vue 表类作为前端,这似乎不能被 observableJS (quarto 使用 OJS)直接使用..
如果您想使用四开,这基本上为您提供了两个选项(使用原生闪亮也是一个选项,因为它在那里工作得很好。)
选项1:在shinyMatrix中实现一个可由OJS使用的表类 - 似乎有一个选项可以在
inputClass
函数中指定matrixInput
参数,但是它没有记录,所以你必须从来源。
选项 2:使用已建立的表格包之一,允许用户编辑。黄金标准是
DT
,它在渲染函数中有一个可编辑标志。 rhandsontable
默认情况下是可编辑的,是 DT 的替代方案。 reactable
也是一个很棒的闪亮包,与四开纸配合得很好,这里值得一提 - 然而遗憾的是它没有提供开箱即用的编辑功能,但可以使用工具提示/对话框使其可编辑或类似的,互联网上有一些例子,但这又意味着需要做一些工作。
这里是四开版选项
DT
和 rhandsontable
的主要选项,API 类似,并且都提供了数千个自定义项。
---
title: "Test Doc"
format:
html:
page-layout: full
server: shiny
---
```{r}
#| context: setup
#| include: false
library(rhandsontable)
library(DT)
```
### using DT
```{r}
#| panel: input
DTOutput('tbl')
```
### using rhandsontable
```{r}
#| panel: input
rHandsontableOutput('htbl')
```
```{r}
#| context: server
# datatable
output$tbl = renderDT({
datatable(matrix(1:10,2,5), editable = T )
})
# rhansonrtable
output$htbl <- renderRHandsontable({
rhandsontable(matrix(1:10,2,5))
})
```
正如您所注意到的,表格的默认渲染是-与shinyMatrix相反-服务器端的。除非表格非常大,否则我没有看到任何缺点,您可以调整它以在浏览器中呈现,..