编织器错误:美学必须是长度1或与数据相同

时间:2017-04-21 13:09:20

标签: r

假设我有以下数据集

    scorer<-function(points){
            points["scores"] <- as.vector((points$X-5)^2+(points$Y-5)^2-9)
            points["class"]<-(as.vector(  points$scores<0 ))
            points
    }

   dataGenerator<-function(size){
        x <- runif( size,1,10)
        y <- runif( size,1,10)
        data.frame(X=x,Y=y)
    }

dataset20 <-scorer(  dataGenerator(20))

测试数据

test<-expand.grid(seq(from = 0, to = 10, by = 0.5), seq(from = 0, to = 10, by = 0.5))
colnames(test) <- c("X", "Y")
test<-scorer(test)
test<-test[,-4]

我使用以下代码使用随机森林class进行预测

  library(randomForest)
  rf<-  test
  rf.mdl =randomForest(class~.,dataset20)
  pred<- predict(rf.mdl,test)
  rf["class"]<-pred

然后我尝试绘制它

   dat <- circleFun(c(5,5),6,npoints = 100)
   predocted.As.Inside <- data.frame(  x=subset(rf, class==T,)$X,y=subset(rf,class==T,)$Y  )
   predocted.As.Outside<- data.frame(  x=subset(rf, class==F,)$X,y=subset(rf,class==F,)$Y  )

   ggplot(dat,aes(x,y)) + geom_path()+
        geom_point(data=predocted.As.Inside ,shape=21,aes(fill="Predicted Inside" ),size=2)

当我在控制台中运行代码时,它运行良好(逐行使用ctrl+Enter),但是当我在RStudio中使用knitter来编译整个文件时,它会抱怨:

Error:Aesthetics must either be length one, or the same as data

在最后一行

更新

circleFun <- function(center ,diameter, npoints = 100){
    r = diameter / 2
    tt <- seq(0,3*pi,length.out = npoints)
    xx <- center[1] + r * cos(tt)
    yy <- center[2] + r * sin(tt)
    return(data.frame(x = xx, y = yy))
}

0 个答案:

没有答案