Вложенный помп с заменителем в R - PullRequest
0 голосов
/ 05 марта 2019

Я создал код для многократного запуска команды lm с разными переменными:

DVs <- c('mpg', 'wt')

lapply(DVs, function(x)
  lm(substitute(scale(DV) ~ scale(disp)+scale(qsec), list(DV = as.name(x))), data=mtcars))

Однако я хотел бы иметь возможность создать вложенный цикл, чтобы перебирать и другую переменную.Код, который я использовал для попытки, это:

DVs <- c('mpg', 'wt')
IVs <- c('disp', 'hp')

    lapply(DVs, function(x) lapply(IVs, function(y)
      lm(substitute(substitute(scale(DV) ~ scale(IV)+scale(qsec), list(DV = as.name(x)), list(IV = as.name(y)), data=mtcars)))))

Однако это приводит к ошибке:

Ошибка в замене (шкала (DV) ~ шкала (IV) + шкала(qsec), list (DV = as.name (x)),: неиспользованные аргументы (список (IV = as.name (X [[i]]))), data = mtcars)

Как я могу заставить этот вложенный цикл работать?

1 Ответ

0 голосов
/ 05 марта 2019

Спасибо за предложение, Джош О'Брайен!Это сработало:

DVs <- c('mpg', 'wt')
IVs <- c('disp', 'hp')

lapply(DVs, function(x) lapply(IVs, function(y) {lm(reformulate(response=x, termlabels=y), data=mtcars)}))

Я не мог понять, как масштабировать мои данные в вызове, но я могу просто масштабировать весь свой фрейм данных:

mtcarsSC <- as.data.frame(scale(mtcars))

DVs <- c('mpg', 'wt')
IVs <- c('disp', 'hp')

lapply(DVs, function(x) lapply(IVs, function(y) {lm(reformulate(response=x, termlabels=y), data=mtcarsSC)}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...