2015-10-08 89 views
1

我有一个包含117个变量和1000个案例(即行)的数据框。我使用varImp{caret}以100次迭代运行PLS模型。将varImp输出存储到矩阵

我想存储变量的名称和来自varImp()输出的整体值以117x100的矩阵。

如何将varImp()输出存储在矩阵中。我想:

a1 <- matrix(0,127,100) 
a2 <- varImp(model.D60, scale = TRUE) 
a3 <- varImp(model.D60, scale = TRUE)$importance 
+0

可以为用户提供数据的一小部分重复的例子(使用'您data.frame dput') – pcantalupo

回答

1

这是很容易:

> library(caret) 
> 
> set.seed(1) 
> dat <- SLC14_1(200) 
> 
> set.seed(2) 
> mod <- train(y ~ ., data = dat, 
+    method = "pls", 
+    preProc = c("center", "scale"), 
+    tuneLength = 10) 
> 
> ## what's inside? 
> str(varImp(mod)) 
List of 3 
$ importance:'data.frame': 20 obs. of 1 variable: 
    ..$ Overall: num [1:20] 24.936 0.174 27.584 21.314 34.648 ... 
$ model  : chr "pls" 
$ calledFrom: chr "varImp" 
- attr(*, "class")= chr "varImp.train" 
> 
> ## This is a data frame: 
> str(varImp(mod)$importance) 
'data.frame': 20 obs. of 1 variable: 
    $ Overall: num 24.936 0.174 27.584 21.314 34.648 ... 
> 
> ## convert to matrix 
> imps <- as.matrix(varImp(mod)$importance)