2013-07-02 11 views
5

反応式内の特定の変数を呼び出したいと思います。このような何か:R Shiny Appの反応性データ()からの呼び出し変数

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 
}) 
}) 

は、残念ながら、私はdata()asc_new1asc_new2を呼び出す方法を見つけるcould't。この1は動作しません:

data()$asc_new1 

答えて

9

反応性物質は、ちょうどあなたがこれを行うことはできません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 
+0

何らかの理由で、私はまだ同じエラーが発生します。私は私の変数を 'list'に入れましたが、私はまだそれを呼び出すことができません:' Data内のエラー$ fitnew:$ operatorはこのS4クラスに対して定義されていません ' –

+0

あなたは間違いなく' list'を最後あなたの 'data()'関数の行?これが返されます。 – MadScone

+0

これは今動作します!どうもありがとう! –

0

を「data()$asc_new1を使用すると、文句を言わない(少なくとも現在の光沢のあるバージョンで)reactiveコンテキスト作成した変数にアクセスすることはでき をあなたはdata()[1]data()[2]を必要としています。あなたがMadSconeのようなリストに載せれば、$と呼ぶと

警告:オブザーバーで未処理のエラー:エラーがあなたのデータで

エラー()$ fitnew取得$演算子は、原子のベクトルが

のために無効である:$演算子このS4クラスに定義されていないが

は、間違った変数にアクセスするだけでなく、 reactive関数の出力にRの予約名であるdataという名前を付けました。あなたはmyDataか何かに変更したいです。

関連する問題