按因子值将数据帧分成子集,发送到返回 glm 类的函数,如何重新组合?
感谢 Hadley 的 plyr 包 ddply 函数,我们可以获取一个数据帧,按因子将其分解为子数据帧,将每个子数据帧发送到一个函数,然后将每个子数据帧的函数结果组合成一个新的数据帧。
但是,如果该函数返回像 glm 这样的类的对象,或者在我的例子中,ac(“glm”,“lm”)。那么,这些不能组合成一个数据框,不是吗?我收到此错误是否
Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : cannot coerce class 'c("glm", "lm")' into a data.frame
有一些更灵活的数据结构可以容纳我的函数调用的所有复杂的 glm 类结果,保留有关数据帧子集的信息?
或者应该以完全不同的方式来完成?
Thanks to Hadley's plyr package ddply function we can take a dataframe, break it down into subdataframes by factors, send each to a function, and then combine the function results for each subdataframe into a new dataframe.
But what if the function returns an object of a class like glm or in my case, a c("glm", "lm"). Then, these can't be combined into a dataframe can they? I get this error instead
Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : cannot coerce class 'c("glm", "lm")' into a data.frame
Is there some more flexible data structure that will accommodate all the complex glm class results of my function calls, preserving the information regarding the dataframe subsets?
Or should this be done in an entirely different way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只是为了扩展我的评论:
plyr
有一组组合输入和输出类型的函数。因此,当您的函数返回无法转换为data.frame
的内容时,您应该使用list
作为输出。因此,不要使用ddply
,而是使用dlply
。当您想要对每个模型执行某些操作并将结果转换为
data.frame
时,ldply
就是关键。让我们使用 dlply 创建一些模型,
它提供了三个 lm 模型的列表。
使用
ldply
,您可以创建一个data.frame
,例如包含每个模型的预测:
每个模型的统计数据:
Just to expand my comment:
plyr
has set of functions to combine input and output type. So when you function returns something inconvertible todata.frame
you should uselist
as output. So instead of usingddply
usedlply
.When you want to do something on each model and convert results to
data.frame
thenldply
is the key.Lets create some models using
dlply
It gives
list
of threelm
models.Using
ldply
you could create adata.frame
, e.g.with predictions of each model:
with statistics to each model: