Может ли этот код создать несколько «специальных» векторов? - PullRequest
1 голос
/ 08 июля 2019

Я новичок в R и просто разбираюсь в окружении и как с ним поиграться. В коде ниже я понимаю, что мы создаем этот список из 4 функций. Но в этой среде makeVector создан объект m, которому присваивается нулевое значение. Что я не понимаю (из кодировщика языка C), как это хранится?

Я понимаю, что makeVector имеет свою собственную среду и имеет 6 вещей: x, m, set, get, setmean, getmean.

makeVector <- function(x = numeric()) {
        m <- NULL
        set <- function(y) {
                x <<- y
                m <<- NULL
        }
        get <- function() x
        setmean <- function(mean) m <<- mean
        getmean <- function() m
        list(set = set, get = get,
             setmean = setmean,
             getmean = getmean)
}

Например,

x1 <- makeVector(as.numeric(1:4))
x2 <- makeVector(as.numeric(1:5))

Теперь мой вопрос: есть ли у x1 и x2 свои копии m или у них один и тот же объект m?

Опять же, если у них есть разные копии m, разве makeVector не похож на класс в C со своими собственными объектами и функциями? Может кто-нибудь уточнить, потому что мне самому трудно это понять.

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