我有一个数据集,我使用不同的阈值(称为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]])中提取三个参数估算值,然后将其放入数据框中。
谢谢您的帮助!
答案 0 :(得分:0)
我不建议将assign
与动态对象名称一起使用。以后在脚本中很难使用这些对象。
相反,我建议您创建一个列表并将结果分配给您的列表。您将面临的一个问题是列表不喜欢带小数位的索引,即它不会区分3.5
和3.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)