Я пытаюсь получить доступ к объекту (a<-get(obj1,envir=parent.environment())
), находящемуся в вызывающей среде из вызываемой среды myf
, и я не могу заставить его работать. Ошибка, которую я получаю, - Object obj1 not found
. Я тоже попробовал parent.frame()
. Есть идеи?R sciny object scoping
library(shiny)
shinyApp(
ui = textOutput("test1"),
server = function(input, output) {
myf <- function(x) {
a <- get(obj1, envir = parent.environment())
return(paste0(x,a))
}
output$test1 <- renderText({
obj1 <- "testing"
a <- lapply(c("a","b","c"), myf)
return(paste(unlist(a), collapse = ","))
})
}
)
Примечание: Я не хочу, чтобы создать obj1 с помощью obj1<<-
, поскольку он создает в глобальной окружающей среде и доступен для всех сеансов
Yikes, я даже не заметил, что '' obj1 "' не цитировался. Неудивительно! – shadowtalker
Я заметил это только тогда, когда исправил проблему parent.environment как правильную среду и все еще получал ошибку, и подумал: «Но я в правильном env ..... почему!» «ах ..» –
Удивительно, спасибо за подробное объяснение 'daattali'. Я должен больше узнать о вызовах фреймов - каких-либо хороших ссылок? – Sri