簡體   English   中英

使用R將異常類強制為數據幀

[英]Coercing an unusual class into a data frame with R

我正在使用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) 

如果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]])應該從矩陣創建一個數據幀。

一般原則是查看對象包含的內容,然后使用“ [”或“ [[”提取所需的項目。 摘要方法的輸出通常是一個列表,在查看摘要對象的打印方法時,您可能會發現更多的價值,因為有時打印方法會構造除摘要元素中內容之外的其他種類的輸出。

您應該使用unmc函數unmc (x,drop = TRUE)轉換mcobject法線數組。 然后,您可以將其添加到data.frame函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM