【问题标题】:sendplot package error in: image() cannot found object 'x'sendplot 包错误:image() 找不到对象“x”
【发布时间】:2012-11-02 01:56:34
【问题描述】:

您好,我有一个使用 sendplot 包创建交互式绘图的函数,但我收到一个奇怪的错误,我在网上搜索了很多,但我什么也没找到!!

我使用 R 2.15.1

问题是当我调用我的函数时出现错误:

图像错误(x = xx,y = yy,z = zz,col = heat.colors(30),axes = FALSE): 找不到对象“xx”

但是如果我在控制台中逐行执行我的代码,它就可以工作(因为 xx,yy,zz,data.mat 在我的工作区中) 我不明白为什么当我调用我的函数时对象不在我的工作区中......

这是我的代码:

   Heatmap<-function(data.mat,main.str="heatmap"){

         xx <- 0:dim(data.mat)[1] 
         yy <- 0:dim(data.mat)[2] 
         zz <- log(data.mat+1)
         plot.call = "image( x=xx,y=yy, z=zz,col = heat.colors(30),axes = FALSE);
         axis(1,0.5:(dim(data.mat)[1]-0.5),
         labels=rownames(data.mat),
         las = 2, line = -0.5, tick = 0,cex.axis =1);
         axis(4,0.5:(dim(data.mat)[2]-0.5),
         labels=colnames(data.mat),
         las = 2, line = -0.5, tick = 0,cex.axis =.8)"
         mai.mat = matrix(c(1.5,.5,.5,1.5), ncol=4)
         mai.prc = FALSE
         xy.labels=list(nb_of_sequences=t(data.mat))
         x.labels=data.frame(City=rownames(data.mat))
         y.labels=data.frame(Order=colnames(data.mat))

         imagesend(plot.call=plot.call,
            y.pos=yy,
            x.pos=xx,
            mai.mat=mai.mat, mai.prc=mai.prc,
            xy.type="image.box",
            x.labels=x.labels,
            y.labels=y.labels,
            xy.labels = xy.labels,
            image.size="500x800",
            fname.root="exPlotImage",
            font.size=18)

           return (0)

如果您对此有解决方案,请告诉我! 谢谢

【问题讨论】:

  • 抱歉,法语翻译错误,正确的错误消息是:图像错误(x = xx,y = yy,z = zz,col = heat.colors(30),axes = FALSE):找不到对象“xx”

标签: r function object


【解决方案1】:

我找到了一个临时解决方案: 我只需要将 xx,yy,zz 分配给全局环境并在最后删除它们,它就可以工作了

  Heatmap<-function(data.mat,main.str="heatmap"){

     xx <<- 0:dim(data.mat)[1] 
     yy <<- 0:dim(data.mat)[2] 
     zz <<- log(data.mat+1)
     plot.call = "image( x=xx,y=yy, z=zz,col = heat.colors(30),axes = FALSE);
     axis(1,0.5:(dim(data.mat)[1]-0.5),
     labels=rownames(data.mat),
     las = 2, line = -0.5, tick = 0,cex.axis =1);
     axis(4,0.5:(dim(data.mat)[2]-0.5),
     labels=colnames(data.mat),
     las = 2, line = -0.5, tick = 0,cex.axis =.8)"
     mai.mat = matrix(c(1.5,.5,.5,1.5), ncol=4)
     mai.prc = FALSE
     xy.labels=list(nb_of_sequences=t(data.mat))
     x.labels=data.frame(City=rownames(data.mat))
     y.labels=data.frame(Order=colnames(data.mat))

     imagesend(plot.call=plot.call,
        y.pos=yy,
        x.pos=xx,
        mai.mat=mai.mat, mai.prc=mai.prc,
        xy.type="image.box",
        x.labels=x.labels,
        y.labels=y.labels,
        xy.labels = xy.labels,
        image.size="500x800",
        fname.root="exPlotImage",
        font.size=18)

  rm(xx,envir = .GlobalEnv)
  rm(yy,envir = .GlobalEnv)
  rm(zz,envir = .GlobalEnv)
  return (0)
}

但我想这不是最好的解决方案......如果你有更好的解决方案,请告诉我

【讨论】:

    猜你喜欢
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2018-06-28
    • 1970-01-01
    • 2013-05-21
    • 2015-06-02
    • 1970-01-01
    相关资源
    最近更新 更多