【发布时间】:2015-06-28 09:05:17
【问题描述】:
我很难将一些代码放入单独的文件中。
以下代码有效:
ui.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Uploading Files"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose CSV File',
accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),
tags$hr()
),
mainPanel(
tableOutput('contents')
)
)
))
服务器.R
library(shiny)
library(dplyr)
shinyServer(function(input, output) {
getData <- reactive({
inFile <- input$file1
if (is.null(inFile)) return(NULL)
data = read.csv(inFile$datapath)
### CleanData
data = data %>%
mutate_each(funs(toupper)) %>%
mutate_each(funs(gsub("[[:punct:]]", " ", .))) %>%
mutate_each(funs(str_trim)) %>%
mutate_each(funs(rm_white)) %>%
sample_frac(1)
})
output$contents = renderTable({
getData()
})
})
但是如果我把一些代码放到一个单独的文件中,它就不起作用了。
ui.R 不变
服务器.R
library(shiny)
library(dplyr)
shinyServer(function(input, output) {
getData <- reactive({
inFile <- input$file1
if (is.null(inFile)) return(NULL)
data = read.csv(inFile$datapath)
### CleanData
source('CleanData.R')
})
output$contents = renderTable({
getData()
})
})
CleanData.R(在笔记本电脑的同一目录中)
data = data %>%
mutate_each(funs(toupper)) %>%
mutate_each(funs(gsub("[[:punct:]]", " ", .))) %>%
mutate_each(funs(str_trim)) %>%
mutate_each(funs(rm_white)) %>%
sample_frac(1)
不行,报错
Error in UseMethod("tbl_vars") :
no applicable method for 'tbl_vars' applied to an object of class "function"
有人知道如何解决这个问题吗?非常感谢
【问题讨论】:
-
您好,通常不鼓励复合问题。将您的问题分成单独的问题可能是有意义的。
-
谢谢@pete23 我会编辑它。
-
CleanData.R里面有函数吗?尝试在reactive表达式之外调用source('CleanData.R'),就在shinyServer(function(input, output))行之后。然后,在您的getData()中调用 CleanData 中的函数名称 -
谢谢@tospig
CleanData.R只有几行代码(不是函数)。我必须把它写成一个函数吗?