如何从几个列表中将数据提取到数据框中

时间:2019-02-01 10:24:05

标签: r list

我有一个数据集,我使用不同的阈值(称为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 :(得分:0)

我不建议将assign与动态对象名称一起使用。以后在脚本中很难使用这些对象。

相反,我建议您创建一个列表并将结果分配给您的列表。您将面临的一个问题是列表不喜欢带小数位的索引,即它不会区分3.53.6。这就是为什么我使用整数作为索引。

我还将立即提取每个gev.fit对象的第7个元素,而不是稍后。如果首先需要整个对象,则可以使用apply函数提取每个列表的第7个元素。

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)