Как извлечь данные в фрейм данных из нескольких списков - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть набор данных, из которого я создал подмножества с использованием различных пороговых значений переменной с именем VAR, вот как я это сделал:

X <- seq(from=3.5, to=5, by=0.1)
for (i in X) {
  assign(paste("gev",i), gev.fit(-mydata[(mydata$VAR < i), 6]))
}

Итак, теперь у меня есть несколько списков с именем gev 3.5, gev 3.6и так далее.Я хочу извлечь оценки трех параметров из всех списков (например, gev 3.5 [[7]]) и поместить их в кадр данных.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 01 февраля 2019

Я бы не рекомендовал использовать assign с динамическими именами объектов.Позже становится очень трудно использовать эти объекты в вашем скрипте.

Вместо этого я предлагаю вам создать список и назначить результаты вашему списку.Одна из проблем, с которой вы столкнетесь, заключается в том, что спискам не нравятся индексы с десятичными разрядами, то есть он не будет различать 3.5 и 3.6.Вот почему я использую целые числа в качестве индексов.

Я также извлекаю 7-й элемент каждого gev.fit объекта сразу, а не позже.Если вам сначала нужен весь объект, вы можете извлечь 7-й элемент каждого списка, используя функцию apply.

X = seq(from=3.5, to=5, by=0.1)

gevlist <- list()
for (i in seq_along(X)) {
  max_var <- X[i]
  gevlist[[i]] <- gev.fit(-mydata[(mydata$VAR < max_var), 6])[[7]]
}

gev.models <- data.frame(X = X, models = gevlist)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...