6

リアクティブ式内で特定の変数を呼び出したいと思います。このようなもの:

サーバー.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_new1andを呼び出す方法がわかりませんでした。これは機能しません:asc_new2data()

data()$asc_new1
4

2 に答える 2

11

リアクティブは、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
于 2013-07-02T14:17:24.760 に答える
0

「コンテキストで作成された変数data()$asc_new1にアクセスすることはできませんreactive(少なくとも現在の光沢のあるバージョンでは)data()[1] data()[2]。MadSconeのようなリストに入れる場合に必要です。$記号で呼び出すと発生します

警告: オブザーバーで未処理のエラー: $ 演算子は原子ベクトルに対して無効です

ただし、取得するエラー

data()$fitnew のエラー: この S4 クラスに対して $ 演算子が定義されていません

変数に間違ってアクセスしただけではありません。の予約名であるreactive関数の出力に名前を付けました。あなたはそれを何かに変えたいと思っています。dataRmyData

于 2015-09-30T17:19:33.487 に答える