大家 对于R闪亮,我是全新的。这是我的问题:
以下是服务器中的两部分编码。
output$contents <- renderDataTable({
inFile <- input$file1
if (is.null(inFile))
return(NULL)
datatable <- read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote)
datatable
}, options = list(orderClasses = TRUE))
output$summary <- renderPrint({
summary(datatable(),20)
aaa <- "afefagfaegar"
list(summary(data(),20),aaa)
})
datatable是一个data.frame,我想在输出$ summary中进行总结。但是,我不能在输出$ summary中使用datatable。我还尝试在第一个开头定义一个data.frame,就像&lt; - data.frame一样。然后我喜欢&lt; -datatable。还是行不通。 你能帮帮我吗?非常感谢。
答案 0 :(得分:3)
是的,您可以在多个输出中使用变量,我们只需稍微调整您的代码。首先要知道的是,就像在R中一样,在函数内部创建的变量与在函数外部创建的变量的范围不同。因此,在您的实例中,您在datatable
内创建了output$contents
,这就是它目前无法使用的原因。因此,让我们在该函数之外创建datatable
,然后将其传递给我们的函数。
datatable <- reactive({
if (is.null(input$file1)) return(NULL)
inFile <- input$file1
dat <- read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote)
return(dat)
})
output$summary <- renderPrint({
if (is.null(datatable())) return(NULL)
summary(datatable(),20)
aaa <- "afefagfaegar"
list(summary(data(),20),aaa)
})
output$contents <- renderDataTable({
if (is.null(datatable)) return(NULL)
dat <- datatable(datatable())
dat
}, options = list(orderClasses = TRUE))
通过在其他函数之外定义datatable
,我们现在可以将它传递给两个函数。我们必须确保在尝试使用它之前检查datatable
是否为NULL。
答案 1 :(得分:0)
您可以使用eventReactive
例如
datatab=eventReactive(input$file1,{
inFile <- input$file1
if (is.null(inFile))
return(NULL)
datatable <- read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote)
return(datatable)
})
output$contents <- renderDataTable({
datatab()
}, options = list(orderClasses = TRUE))
output$summary <- renderPrint({
summary(datatab(),20)
aaa <- "afefagfaegar"
list(summary(datatab(),20),aaa)
})