2016-04-01 73 views
0

我想存儲boxtidwell的結果,以便編寫一些代碼來實現自動化並避免手動轉換變量。見下面的例子:r-如何將boxtidwell的結果存儲到數據框/矩陣

>boxTidwell(prestige ~ income + education, ~ type + poly(women, 2), data = Prestige) 

##   Score Statistic p-value MLE of lambda 
## income   -4.482406 0.0000074 -0.3476283 
## education  0.216991 0.8282154  1.2538274 
## iterations = 8 

因爲我不想給變量變換手動,如下面的代碼:

>Prestige$income <- (Prestige$income)^(-0.3476283) 

當有許多變量需要,轉化也將是如此時間耗時。我嘗試了matrix和data.frame,但都是徒勞的。

> box<-boxTidwell(prestige ~ income + education, ~ type + poly(women, 2), data = Prestige) 
> box<-as.data.frame(box) 

#Error in as.data.frame.default(box) : 
#cannot coerce class ""boxTidwell"" to a data.frame 

> box<-as.matrix(box) 
> box 

#Error in round(x$result, digits) : 
#non-numeric argument to mathematical function 

我已經搜索了一段時間,但似乎徒勞,非常感謝您的任何建議和想法提前。

回答

1

它可以在box$result例如

box$result[,"MLE of lambda"] 

    income education 
-0.3476283 1.2538274 

使你的代碼變得以上(粗製濫造)
Prestige$income <- (Prestige$income)^box$result[1,3]

一般情況下,檢查出什麼是你的對象裏面使用str

+0

謝謝,這是非常有用的。但是,還有改進的餘地嗎?例如,我們可以避免在代碼中手動輸入變量名「收入」(即:'收入')。它應該是更一般的方式是這樣的:'Prestige $ result [1,0] < - (Prestige $收入)^ box $ result [1,3]'。由於可能需要變換許多變量,因此我們無法手動輸入所有變量。 – Samoth

+0

我不確定你的意思。您可以訪問'box $ result'中的整個變量矩陣。它有2行和3列,你可以索引它,但是你想要的。 – Eugene

相關問題