使用R将异常类强制转换为数据框

时间:2014-07-16 18:28:09

标签: r dataframe knitr

我正在使用R包mc2d,最终输出是类'mc'的对象,这对于这个包是唯一的。我想使用knitr在一个漂亮的表中呈现summary.mc的结果;但是,除了打印'mc'对象的摘要,我无法弄清楚如何使用此功能。我不能强迫它到数据框;它抛出错误:

Error in as.data.frame.default(Model) : cannot coerce class ""mc"" to a data.frame

这是我希望以更好的格式输出的输出示例:

> summary(Model$Risk)
node :

        mean    sd       Min      2.5%     25%      50%      75%      97.5%     
median 5.77e-05 7.46e-04 0.00e+00 2.08e-13 1.97e-09 5.74e-08 1.09e-06 1.77e-04
mean   2.94e-03 8.94e-03 5.59e-12 1.42e-08 5.92e-05 1.39e-03 4.55e-03 1.09e-02
2.5%   6.06e-08 6.04e-07 0.00e+00 0.00e+00 1.96e-12 6.25e-11 1.29e-09 2.22e-07
97.5%  7.58e-03 6.07e-02 3.77e-15 1.20e-10 8.15e-07 1.77e-05 2.94e-04 4.01e-02

我不能只用$运算符引用向量并自己找到四分位数,因为有些行与不确定性有关,有些行与可变性有关,我无法分辨哪些是我自己的。我尝试在mc2d :: summary.mc上阅读源代码,以了解函数如何访问这些属性,但阅读代码超出了我目前的能力。

我确信那里有很多不同寻常的课程,不能强行进入数据框架 - 所以一般来说,人们做什么?

最小可重复的例子:

library(mc2d)
ndvar(101) #setting number of variability dimensions
ndunc(101) #uncertainty dimensions
fake.mean <- mcstoc(runif, min=0, max=2, type='U') #'uncertain' parameter estimates
fake.sd <- mcstoc(runif, min=0.1, max=1.5, type='U') 

fake.data <- mcstoc(rnorm, mean=fake.mean, sd=fake.sd, type='VU') #incorporating uncertain parameters and variable data

fake.Model <- mc(fake.data) #creating mc object
summary(fake.Model) 

2 个答案:

答案 0 :(得分:1)

如果str(summary(fake.Model))的输出是一个列表,其中只有一个元素具有[1:101, 1:101, 1] -0.0379 0.6593 0.2933 1.4019 -0.126 ... ..指示的常规结构,表示它只是一个矩阵,那么as.data.frame(summary.mode.Model )[[1]])应该从矩阵中创建一个数据帧。

一般原则是查看对象包含的内容,然后使用&#34; [&#34;或者&#34; [[&#34;提取你需要的物品。摘要方法的输出通常是一个列表,您可以在查看摘要对象的打印方法时发现更多的价值,因为有时print方法将构建除摘要元素之外的其他类型的输出。

答案 1 :(得分:0)

您应该使用unmc函数unmc (x,drop = TRUE)来转换mcobject普通数组。然后,您可以将其添加到data.frame函数。