Shiny Matrix Input Field.
Matrix Input for Shiny
Matrix Input for Shiny
This package provides an input field to enter matrix conveniently in a shiny application. It supports tabbing and jumping linewise in the matrix.
Installation
From CRAN:
install.packages("shinyMatrix")
From GitHub:
if (require("devtools")) install_github("INWTlab/shiny-matrix")
Usage
UI
The input field is generated by the function matrixInput
matrixInput <- function(inputId,
value = matrix("", 1, 1),
inputClass = "",
rows = list(),
cols = list(),
class = "character"
pagination = FALSE,
lazy = FALSE){
[...]
}
You can define parameters as follows:
| Parameter | Description | |-|-| | inputId
| id
of html element | | value
| matrix | | inputClass
| class
of html element (Class matrix-input
is added automatically) | | rows
| list
of parameters (see below) | | cols
| list
of parameters (see below) | | class
| class of resulting matrix (numeric
and character
) is supported | | pagination
| Should the matrix be paginated (10 rows per page) | | lazy
| Lazy update data on server |
Parameter rows
/ cols
take a list of arguments. The following is supported
| Parameter | Description | |-|-| |n
| number of rows (is calculated from value
per default) | |names
| show row/colnames (names are taken from value
)| |editableNames
| should row/colnames be editable? | | extend
| should rows/cols be automatically be added if table is filled to the last row / column? | | delta
| how many blank rows/cols should be added | multiheader
| Display multiheader - currently only header spanning two columns are supported
Call the matrixInput function in your UI generating, e.g. ui.R
## numeric matrix
matrixInput("matrix1", class = "numeric")
## editable rownames
matrixInput("matrix2",
rows = list(
names = TRUE,
editableNames = TRUE),
data = matrix(letters[1:12], 3, 4)
)
Get value
You can access the value from the matrix input using input$inputId
in your server function. The result will always be a matrix of the class defined in matrixInput
.
Update Input Field
You can update the input field using updateMatrixInput
updateMatrixInput(session, inputId, value = NULL)
value
is the data object. In the future there should be also support to update the other parameters.
Example Apps
You find the code for the example app in inst/appXXX
.
Basic functionality
- Fixed matrix width
- Editable matrix content
- No column and rownames
Use the matrix on the left to input values, matrix on the right displays the result.
library(shinyMatrix)
startApplication("app")
Update Matrix Input from R
- Generate a random matrix within the shiny server function by clicking on "Update Matrix"
- The matrixInput field gets updated with
updateMatrixInput
from R
startApplication("appUpdate")
Editable row and column names
- Edit row and column names by clicking on the cell
- The result will be shown on the right
startApplication("appRownames")
Uneditable cells
- Make table cells uneditable
- No clicking into cells, no changing values
startApplication("appUneditableCells")
Extend Matrix Automatically
- If matrix is full (last row and columns contain values) rows and columns are added automatically
startApplication("appExtend")
Custom Column Header
- Replace default header with a multiheader
- Automatically add 2 columns if matrix is full
startApplication("appDoubleHeader")
Delete Rows and Columns
- add a button to delete rows and columns. This also works for multiheader.
startApplication("appDelete")
Lazy Update of server values
- Only update data on server when no input field is visible
startApplication("appLazy")