从Rstudio中获取caret包工作的train()函数是否有任何变通方法?

从Rstudio中获取caret包工作的train()函数是否有任何变通方法?,r,compiler-construction,rstudio,r-caret,R,Compiler Construction,Rstudio,R Caret,我正在浏览Max Kuhn和Kjell Johnson写的非常好的书《应用预测建模》的示例,不幸的是,我被困在使用train()的一个示例中函数和GermanCredit数据集之一,该数据集由caret软件包提供,用于支持向量机的交叉验证: library(AppliedPredictiveModeling) library(caret) # preparing the data data(GermanCredit) GermanCredit <- GermanCredit[, -near

我正在浏览Max Kuhn和Kjell Johnson写的非常好的书《应用预测建模》的示例,不幸的是,我被困在使用
train()的一个示例中
函数和
GermanCredit
数据集之一,该数据集由
caret
软件包提供,用于支持向量机的交叉验证:

library(AppliedPredictiveModeling)
library(caret)
# preparing the data
data(GermanCredit)
GermanCredit <- GermanCredit[, -nearZeroVar(GermanCredit)]
GermanCredit$CheckingAccountStatus.lt.0 <- NULL
GermanCredit$SavingsAccountBonds.lt.100 <- NULL
GermanCredit$EmploymentDuration.lt.1 <- NULL
GermanCredit$EmploymentDuration.Unemployed <- NULL
GermanCredit$Personal.Male.Married.Widowed <- NULL
GermanCredit$Property.Unknown <- NULL
GermanCredit$Housing.ForFree <- NULL
set.seed(100)
inTrain <- createDataPartition(GermanCredit$Class, p = .8)[[1]]
GermanCreditTrain <- GermanCredit[ inTrain, ]
GermanCreditTest  <- GermanCredit[-inTrain, ]

# Grid selection for `sigma` and `cost` tuning parameters:    
library(kernlab)
set.seed(231)
sigDist <- sigest(Class ~ ., data = GermanCreditTrain, frac = 1)
svmTuneGrid <- data.frame(.sigma = sigDist[1], .C = 2^(-2:7))

# SVM classification and cross-validation
svmFit <- train(Class ~ .,
                data = GermanCreditTrain,
                method = "svmRadial",
                preProc = c("center", "scale"),
                tuneGrid = svmTuneGrid,
                trControl = trainControl(method = "repeatedcv", repeats = 5, 
                                         classProbs =  TRUE))  
有时会显示以下错误消息:

Loading required package: class
Warning: namespace ‘compiler’ is not available and has been replaced
by .GlobalEnv when processing object ‘GermanCredit’
Error in comp(expr, env = envir, options = list(suppressUndefined = TRUE)) : 
  could not find function "makeCenv"
In addition: Warning message:
executing %dopar% sequentially: no parallel backend registered
然后我了解到
makeCenv()
doMC
包中,该包被建议作为并行计算或并行处理的替代方案,但我不会选择此包,因为我想它在Windows平台中不可用。还有别的选择吗

更新: 这些错误只有在代码在
rstudioide
下运行时才会出现,默认的R控制台没有问题,所以我想问题是Rstudio的局部问题。在R控制台中的时间有点长(大约8分钟),不过,考虑到下面提到的硬件规格,我想知道如何加快速度

我的sessioninfo()输出在这里(Rstudio):

默认R控制台的sessionInfo()输出:

R version 3.0.2 (2013-09-25)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] datasets  grDevices grid      splines   graphics  utils     stats    
[8] methods   base     

other attached packages:
 [1] e1071_1.6-1     class_7.3-9     kernlab_0.9-19  caret_5.17-7   
 [5] foreach_1.4.1   cluster_1.14.4  lattice_0.20-23 reshape2_1.2.2 
 [9] plyr_1.8        scales_0.2.3    ggplot2_0.9.3.1 lmPerm_1.1-2   
[13] coin_1.0-23     survival_2.37-4 sos_1.3-8       brew_1.0-6     

loaded via a namespace (and not attached):
 [1] codetools_0.2-8    colorspace_1.2-4   compiler_3.0.2     dichromat_2.0-0   
 [5] digest_0.6.3       gtable_0.1.2       iterators_1.0.6    labeling_0.2      
 [9] MASS_7.3-29        modeltools_0.2-21  munsell_0.4.2      mvtnorm_0.9-9996  
[13] proto_0.3-10       RColorBrewer_1.0-5 stats4_3.0.2       stringr_0.6.2     
[17] tools_3.0.2       
问题:

  • 必须与
    Rstudio
    进行交互,因为它在默认的R控制台中运行良好,基于默认的R控制台和Rstudio的两个sessionInfo()输出,区别在于
    编译器
    包。奇怪的是,这个包裹在CRAN里找不到,我在这里找到了一张便条: 当我在Rstudio中执行此操作时,表示load(编译器)就足够了:不可能出现以下错误消息:

    错误:程序包“编译器”是在R 3.0.0之前生成的:请重新安装它

  • 更新
    在将编译器包库从默认R lib路径复制粘贴到Rstudio lib路径后,使用Rstudio最终奏效,但时间仍然太长(大约8分钟),如果这有助于更快找到答案,我将发布一个单独的并行处理问题,给出下面的硬件和windows

  • 我的笔记本电脑是2.1GHz双核处理器,3GB,windows 32位,你知道如何使用
    train()
    函数进行并行处理吗?你能不能给我发个R码,我真的非常感激

  • 插入符号代码库完全独立于doMC或任何其他“do”包。我没有一个windows系统在这里测试,但我99%肯定这不是一个重复的问题。该软件包每晚在多个地方(如R-Forge)和3-4个不同操作系统(包括Windows)进行测试。我从来没有见过这个问题出现,甚至当我专门使用Windows向大量观众讲授这个软件包的课程时

    我的猜测是您意外地在某处调用了一个doMC函数(即使它没有列在您的sessionInfo输出中)

    如果其他人可以尝试重现此错误,这将很有帮助

    谢谢

    最大值

    升级R

        sudo su
        echo "deb http://www.stats.bris.ac.uk/R/bin/linux/ubuntu precise/" >> /etc/apt/sources.list
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
        apt-get update
        apt-get upgrade
    

    这不可能是因为调用了
    doMC
    其他地方,我会排除这个。错误消息一直指向
    makeCenv()
    ,但这次
    命名空间“编译器”不可用
    ,请查看上面的更新错误消息。我希望有一个补救办法。它最终起作用了,但只有在默认的R控制台中没有任何错误,完成这项工作需要几分钟,因此必须与Rstudio进行交互,我更新了问题。我想知道如何在Windows 32位下设置并行处理,我的笔记本电脑是双核2.1GHz,RAM 3GB。我注意到默认R控制台和Rstudio的两个SessionInfo()之间的区别是错误消息中出现的编译器包,无法使用R studio加载此程序包
    错误:程序包“compiler”是在R 3.0.0之前生成的:请重新安装它
    。是的,我安装了
    compiler_3.0.2
    版本,因为无法从CRAN下载复制和粘贴,因此它工作正常。似乎这个包已经随R一起提供了,但是由于某种原因,我在Rstudio lib路径中有一个旧版本,这引起了所有的麻烦。
    R version 3.0.2 (2013-09-25)
    Platform: i386-w64-mingw32/i386 (32-bit)
    
    locale:
    [1] LC_COLLATE=English_United States.1252 
    [2] LC_CTYPE=English_United States.1252   
    [3] LC_MONETARY=English_United States.1252
    [4] LC_NUMERIC=C                          
    [5] LC_TIME=English_United States.1252    
    
    attached base packages:
    [1] datasets  grDevices grid      splines   graphics  utils     stats    
    [8] methods   base     
    
    other attached packages:
     [1] e1071_1.6-1     class_7.3-9     kernlab_0.9-19  caret_5.17-7   
     [5] foreach_1.4.1   cluster_1.14.4  lattice_0.20-23 reshape2_1.2.2 
     [9] plyr_1.8        scales_0.2.3    ggplot2_0.9.3.1 lmPerm_1.1-2   
    [13] coin_1.0-23     survival_2.37-4 sos_1.3-8       brew_1.0-6     
    
    loaded via a namespace (and not attached):
     [1] codetools_0.2-8    colorspace_1.2-4   compiler_3.0.2     dichromat_2.0-0   
     [5] digest_0.6.3       gtable_0.1.2       iterators_1.0.6    labeling_0.2      
     [9] MASS_7.3-29        modeltools_0.2-21  munsell_0.4.2      mvtnorm_0.9-9996  
    [13] proto_0.3-10       RColorBrewer_1.0-5 stats4_3.0.2       stringr_0.6.2     
    [17] tools_3.0.2       
    
        sudo su
        echo "deb http://www.stats.bris.ac.uk/R/bin/linux/ubuntu precise/" >> /etc/apt/sources.list
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
        apt-get update
        apt-get upgrade