В R, как проверить, существует ли объект в памяти изнутри самого объекта? - PullRequest
1 голос
/ 20 февраля 2020

Я столкнулся с этой проблемой в нескольких отдельных случаях сейчас, и я хотел бы получить ваш вклад. В R объекты могут быть удалены или перезаписаны, но если они используют библиотеки R cpp, они будут продолжать делать то, что делают.

Например, при подключении к веб-сокету с помощью пакета websocket:

ws<-WebSocket$new(paste0(gate,"/?v=6&encoding=json"),autoConnect=F)
ws$onMessage(function(event) {
  print(event)
})
ws$connect()

Объект ws теперь является моим единственным способом управления веб-сокетом, и если он удален или перезаписан, его невозможно отключить, кроме как перезапустить R.

Подобная проблема, когда используя более поздний пакет:

BumpUp<-function(.self){
  .self$iter<-.self$iter+1
  message("Valued bumped up to ",.self$iter)
  if(.self$iter<10){
    later::later(~.self$bump(),delay=1)
  }
}
MakeTestObject<-setRefClass("testobject",fields=list(iter="numeric"),methods=list(bump=BumpUp))

testobj<-MakeTestObject(iter=0)
testobj$bump()

rm(testobj)

l oop, связанный с testobj, продолжает повторяться, несмотря на то, что сам объект был удален из памяти.

Есть ли способ сделать объект ссылочного класса проверить, если он все еще существует в памяти? В более общем смысле, возможно ли, чтобы объект знал свое имя в памяти?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...