在哪里放置代码在输入文件上工作(Shiny,R)
where to put the code working on input file (Shiny, R)
我很难将一些代码放入单独的文件中。
以下代码有效:
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')
)
)
))
server.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不变
server.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"
有人知道如何解决这个问题吗?非常感谢
您收到该错误是因为当您 source
和 CleanData.R 时,它是在您未定义 data
的全局环境中评估的,因此它指的是到函数 data
。您可以将 local=TRUE
添加到 source
调用以在调用环境中对其进行评估,
source('CleanData.R', local=TRUE)
我很难将一些代码放入单独的文件中。
以下代码有效:
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')
)
)
))
server.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不变
server.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"
有人知道如何解决这个问题吗?非常感谢
您收到该错误是因为当您 source
和 CleanData.R 时,它是在您未定义 data
的全局环境中评估的,因此它指的是到函数 data
。您可以将 local=TRUE
添加到 source
调用以在调用环境中对其进行评估,
source('CleanData.R', local=TRUE)