Search code examples
rr-caretglmnet

Error with the train function in caret, when using glmnet and 2 classes


The following block of code fails, for no reason I can discern.

library(caret)
data(iris)
TrainData <- iris[,1:4]
TrainClasses <- factor(ifelse(iris[,5]=='versicolor','versicolor','other'))
model1 <- train(TrainData,TrainClasses,method='glmnet')

With the following error:

Error in { : task 1 failed - "'n' must be a positive integer >= 'x'"

If I sub in a different model, such as glm it runs fine. If I uses 3 classes, TrainClasses <- iris[,5], it also works fine.

What about 2 classes is uniquely causing the glmnet method to fail?

This is R version 2.14.0, caret version 5.09-006, on windows. The same error happens on my mac and on linux.


Solution

  • I'm not able to give you an answer about why you are getting an error (since the code runs fine on my machine) but I will suggest you following the advice in the R-hel Posting Guide and include more details about your versions and set up.:

    > model1
    150 samples
      4 predictors
      2 classes: 'other', 'versicolor' 
    
    No pre-processing
    Resampling: Bootstrap (25 reps) 
    
    Summary of sample sizes: 150, 150, 150, 150, 150, 150, ... 
    
    Resampling results across tuning parameters:
    
      alpha  lambda  Accuracy  Kappa   Accuracy SD  Kappa SD
      0.1    0.1     0.698     0.19    0.0419       0.0891  
      0.1    0.462   0.675     0.0311  0.0399       0.0719  
    # >>> snipped the rest of a page of code
    

    I have a fairly full session and yours will surely have been different. There can be conflicts that arise because of functions having been masked by other packages that were loaded later in a session. There were quite a few warnings when I loaded "caret" just now.

    > sessionInfo()
    R version 2.14.0 Patched (2011-11-13 r57650)
    Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
    
    locale:
    [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
    
    attached base packages:
     [1] tools     stats4    grid      splines   stats     graphics  grDevices utils    
     [9] datasets  methods   base     
    
    other attached packages:
     [1] glmnet_1.7.1        Matrix_1.0-1        e1071_1.6           class_7.3-3        
     [5] caret_5.09-012      foreach_1.3.2       codetools_0.2-8     iterators_1.0.5    
     [9] cluster_1.14.1      mlogit_0.2-1        maxLik_1.0-2        miscTools_0.6-10   
    [13] lmtest_0.9-29       statmod_1.4.13      Formula_1.0-1       mvbutils_2.5.101   
    [17] data.table_1.7.1    party_0.9-99995     vcd_1.2-12          colorspace_1.1-0   
    [21] strucchange_1.4-6   sandwich_2.2-8      coin_1.0-20         modeltools_0.2-18  
    [25] lubridate_0.2.5     quantreg_4.71       SparseM_0.89        raster_1.9-41      
    [29] MASS_7.3-16         ks_1.8.4            misc3d_0.8-1        rgl_0.92.798       
    [33] mvtnorm_0.9-9991    KernSmooth_2.23-7   sp_0.9-91           latticeExtra_0.6-19
    [37] RColorBrewer_1.0-5  zoo_1.7-6           ggplot2_0.8.9       proto_0.3-9.2      
    [41] reshape_0.8.4       plyr_1.6            rms_3.3-2           Hmisc_3.9-0        
    [45] survival_2.36-10    sos_1.3-1           brew_1.0-6          lattice_0.20-0     
    
    loaded via a namespace (and not attached):
    [1] compiler_2.14.0 digest_0.5.1    stringr_0.5