This package provides an input field to enter matrix conveniently in a shiny application. It supports tabbing and jumping linewise in the matrix, copy-pasting from other spread sheets applications.
From CRAN:
install.packages("shinyMatrix")
From GitHub:
if (require("devtools")) install_github("INWTlab/shiny-matrix")
The input field is generated by the function
matrixInput
<- function(inputId,
matrixInput 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)
)
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
.
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.
You find the code for the example app in
inst/appXXX
.
Use the matrix on the left to input values, matrix on the right displays the result.
library(shinyMatrix)
startApplication("app")
updateMatrixInput
from RstartApplication("appUpdate")
startApplication("appRownames")
startApplication("appExtend")
startApplication("appDoubleHeader")
startApplication("appDelete")
startApplication("appLazy")