所以,我刚刚遇到一个奇怪的问题(我认为)app.R
中定义的函数在我稍后提供的另一个R脚本中不可见。然而,如果我使用与常规R脚本相同的功能,它可以正常工作。
这是可重现的代码:
app.R:
library(shiny)
f1 <- function(x) {
x
}
source('plot/plot.R')
ui <- fluidPage(
h1('MPG Plot'),
plotOutput('plot1')
)
server <- function(input, output) {
output$plot1 <- renderPlot({
getPlot()
})
}
shinyApp(ui = ui, server = server)
情节/ plot.R:
getPlot <- function() {
cat(f1(10))
plot(mtcars$wt, mtcars$mpg)
}
以下是关于未找到函数f1
的错误:
runApp()
Listening on http://127.0.0.1:5254
Warning: Error in cat: could not find function "f1"
Stack trace (innermost first):
78: cat
77: getPlot [plot/plot.R#3]
76: renderPlot [c:\Users\tumulurig3\Documents\rProjects\cancerGeneExp\junk/app.R#16]
68: output$plot1
1: runApp
然而,当我将该函数放在另一个脚本中时,让我们调用f.R
,并在app.R
中找到它,一切正常。
为什么在全局环境中定义的函数对后面的脚本不可见?
版本信息:
packageVersion('shiny')
[1] ‘0.13.2’
version
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status Revised
major 3
minor 2.4
year 2016
month 03
day 16
svn rev 70336
language R
version.string R version 3.2.4 Revised (2016-03-16 r70336)
nickname Very Secure Dishes
在我的Windows安装上以及RHEL安装上遇到完全相同的问题。