Объект типа 'closure' не является поднабором (car :: Boot package) - PullRequest
1 голос
/ 21 сентября 2019

Я понимаю, что «объект типа« замыкание »не является подмножеством» может возникнуть при попытке подмножества функции или при попытке доступа к функции с использованием $.Тем не менее, это не так в моем коде, как вы увидите ниже.Я диагностировал проблему по тому факту, что по какой-то причине построение линейной модели с использованием формулы, хранящейся в объекте формулы, приведет к тому, что car::Boot сгенерирует «ошибку с подмножеством» при вызове линейной модели в аргументе object.

library(car)
library(purrr)
library(boot)

set.seed(111)
## Reprex - Working
train_df1 <- data.frame(y = rnorm(10, mean = 10, sd = 2))
train_df1$x <- train_df1$y*1.5

train_df2 <- data.frame(y = rnorm(5, mean = 10, sd = 3))
train_df2$x <- train_df2$y*1.75
train_list <- list(train_df1, train_df2)

models_list <- train_list %>%
  map(~lm(y ~ x, data = .))
car::Boot(object = models_list[[1]])    ## works fine

## Reprex - Not Working
n <- colnames(train_df1)
n <- trimws(n, "both")
f <- as.formula(paste("y ~", paste(n[!n %in% "y"], collapse = " + ")))

models_list <- train_list %>%
  map(~lm(f, data = .))               ## error is due to using the "f" formula object instead of lm(y ~ x, data = .)

car::Boot(object = models_list[[1]]) ## error occurs here
#Error: object of type 'closure' is not subsettable

car::Boot(object = models_list[[2]])
#Error: object of type 'closure' is not subsettable

out <- models_list[[1]]
car::Boot(object = out)
#Error: object of type 'closure' is not subsettable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...