我正在尝试创建一个闪亮的应用程序,该程序接受公式作为输入参数,并相应地更改文件。
但是我无法做到这一点,结果是公式的打印枯萎了。感谢是否有人可以调查该问题并提出解决方案。
library(shiny)
library(plyr)
library(dplyr)
library(DT)
library(data.table)
ui <- pageWithSidebar(
headerPanel = headerPanel('data'),
sidebarPanel = sidebarPanel(# fileInput(
# 'mtcars', h4('Uplaodmtcardata in csv format')
# ),
uiOutput('formula')),
mainPanel(dataTableOutput("data"))
)
server <- function(input, output, session) {
mtcarsFile <- reactive({
input$mtcars
})
xxmtcars <-
reactive({
as.data.table(mtcars)
})
output$formula <- renderUI({
textInput('formula',
h5('formula'))
})
formulaPars <- reactive({
!!(input$formula)
})
newCol = reactive({
quo(formulaPars())
})
output$data <- renderDataTable({
as.data.table(mutate(xxmtcars(), cyl + (!!newCol())))
})
}
runApp(list(ui = ui, server = server))
答案 0 :(得分:1)
可以使用rlang::parse_expr()
来更改代码,如下所示:
server <- function(input, output, session) {
mtcarsFile <- reactive({
input$mtcars
})
xxmtcars <-
reactive({
if (!is.null(input$mtcars)) {
as.data.table(read.csv(input$mtcars$datapath))
}
})
output$formula <- renderUI({
textInput('formula', h5('formula'))
})
formulaPars <- reactive({
(input$formula)
})
newCol = reactive({
formula = formulaPars()
if (formula != '') {
rlang::parse_expr(formula)
}
})
output$data <- renderDataTable({
data <- xxmtcars()
if (!is.null(data) && input$formula != '') {
as.data.table(mutate(data , cyl + !!newCol()))
}
})
}
runApp(list(ui = ui, server = server))