我想在反应式表达式中调用某个变量。像这样:
server.R
library(raster)
shinyServer(function(input, output) {
data <- reactive({
inFile <- input$test #Some uploaded ASCII file
asc <- raster(inFile$datapath) #Reads in the ASCII as raster layer
#Some calculations with 'asc':
asc_new1 <- 1/asc
asc_new2 <- asc * 100
})
output$Plot <- renderPlot({
inFile <- input$test
if (is.null(inFile)
return (plot(data()$asc_new1)) #here I want to call asc_new1
plot(data()$asc_new2)) #here I want to call asc_new2
})
})
很遗憾,我无法了解如何在asc_new1
内拨打asc_new2
和data()
。这个不起作用:
data()$asc_new1
答案 0 :(得分:9)
Reactive就像R中的其他函数一样。你不能这样做:
f <- function() {
x <- 1
y <- 2
}
f()$x
所以你在output$Plot()
内的内容也无效。您可以通过从data()
返回列表来执行您想要的操作。
data <- reactive({
inFile <- input$test
asc <- raster(inFile$datapath)
list(asc_new1 = 1/asc, asc_new2 = asc * 100)
})
现在你可以做到:
data()$asc_new1
答案 1 :(得分:0)
&#34;使用data()$asc_new1
,您将无法访问reactive
上下文创建的变量(至少使用当前的闪亮版本)。
如果您将其放在像MadScone这样的列表中,则需要data()[1]
data()[2]
。使用$
符号调用它会引发
警告:观察者中出现未处理的错误:$ operator对原子向量无效
然而,你得到的错误
data()中的错误$ fitnew:$ S4未定义此类
不仅是因为您访问变量错误。您将reactive
函数data
的输出命名为R
中的保留名称。您想将其更改为myData
或其他内容。