Подмножество списков и циклический просмотр списков в R - PullRequest
0 голосов
/ 02 июня 2019

Я провожу некоторые анализы, где я должен использовать список кадров данных в качестве входных данных.Программное обеспечение использует списки наборов данных в качестве вывода проведения множественного вменения.Тем не менее, я хотел бы иметь возможность автоматизировать некоторые анализы.Например, вот некоторые игрушечные данные, чтобы проиллюстрировать мои проблемы:

a <- rnorm(10, 0, 1)
b <- rnorm(10, 0, 1)
c <- rep(c("a","b"),5)
data <- cbind.data.frame(a,b,c)
mylist <- list(data, data)
mylist

Итак, mylist содержит два набора данных.Это входные данные для байесовской модели, которую я использую с помощью brms:

require(brms)
library(brms)
brm_multiple(a ~ b, data=mylist, cores =2)

Здесь brms объединяет исходные данные из нескольких наборов данных.У меня есть два вопроса:

  1. Как я могу составить списки так, чтобы модель запускалась только для строк "a" для переменной "c".То есть я хочу соответствовать модели a ~ b при data$c == a.

  2. Далее, есть ли способ, которым я могу перебрать значения переменной "c" и сохранить оценки для каждого уровня переменной?То есть автоматизировать процесс так, чтобы я получил a ~ b, когда data$c == a, а затем, когда data$c == b, и т. Д., А затем сохранить оценки в матрице?

1 Ответ

0 голосов
/ 02 июня 2019
a <- rnorm(10, 0, 1)
b <- rnorm(10, 0, 1)
c <- rep(c("a","b"),5)
data <- cbind.data.frame(a,b,c)
mylist <- list(data, data)
mylist



modelfunction <- function(dflist) {
  resultlist <- list()
  modelvars <- as.character(unique(dflist[[1]]$c))
  for(i in 1:length(modelvars)) {
    subsetdf <- lapply(dflist, function(x) x[x$c == modelvars[[i]], ])
    model <- brm_multiple(a ~ b, data=subsetdf, cores =2)
    resultlist[[i]] <- model 
  }
  return(resultlist)
}

modelfunction(mylist)

Я написал для вас функцию к этому.Динамически задает подмножества для каждой уникальной категории в переменной "c" в вашем списке data.frames и сохраняет каждую модель внутри списка.

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