使用R强制将一个不寻常的类放入数据帧中



我正在使用R包mc2d,最终输出是类'mc'的对象,这是这个包所独有的。我想对结果进行总结。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) 

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

一般原则是查看对象包含什么,然后使用"["或"[["提取所需的项。摘要方法的输出通常是一个列表,您可能会发现查看摘要对象的print方法有更大的价值,因为有时print方法会构造除摘要元素之外的其他类型的输出。

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

最新更新