格子级别图在RApache下无法正常运行

3
我正在开发一个通过curl和RApache调用R的PHP Web应用程序,大部分功能都正常工作。但是,一个lattice图形会抛出以下错误:
RApache警告/错误!!!Error in uy + c(-1, 1) : 二进制运算符的非数字参数
我尝试保存输入到图形的数据结构,并在我的本地R中进行绘图,但是然后这个图形可以完美地工作。所以我无法复制这个错误。
下面是代码在RApache中运行时加载的库:
library(Brew)
library(Cairo)
library(rjson)
library(DBI)
library(RMySQL)
library(reshape)
library(plyr)
library('RColorBrewer')
library(ggplot2)
library(lattice)
library(latticeExtra)
library(hexbin)

这里是一部分脚本:

colgrad.pal<-colorRampPalette(brewer.pal(11,'Spectral'), interpolate='spline')

//problem plot
dists.med.lplot<-levelplot(value~starttime+groupname|dists, data=MDist.median,
  col.regions=rev(colgrad.pal(200)),colorkey=list(col=rev(colgrad.pal(200))),
  xlab='Time(s)',ylab='Treatment',
  main='Level Plot of Median Distance',
  layout=c(1,3))

这里有一个数据文件的链接。我是这样读入它的: //链接不可靠,已删除

数据看起来像这样:

'data.frame':   2880 obs. of  6 variables:
 $ groupname: Factor w/ 8 levels "rowA","rowB",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ fCycle   : Factor w/ 6 levels "Cycle 1","Cycle 2",..: 6 6 6 6 6 6 6 6 6 6 ...
 $ fPhase   : Factor w/ 2 levels "Dark","Light": 1 1 1 1 1 1 1 1 1 1 ...
 $ starttime: int  0 60 120 180 240 300 360 420 480 540 ...
 $ dists    : Factor w/ 3 levels "inadist","lardist",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ value    : num  47.5 64 78.3 39.2 53.7 ...

有什么想法是问题的原因或如何更好地进行故障排查吗?

ETA版本/平台信息

        [platform] => sparc-sun-solaris2.10
        [arch] => sparc
        [os] => solaris2.10
        [system] => sparc, solaris2.10
        [status] => 
        [major] => 2
        [minor] => 10.1
        [year] => 2009
        [month] => 12
        [day] => 14
        [svn rev] => 50720
        [language] => R
        [version.string] => R version 2.10.1 (2009-12-14)

您使用的是哪个版本的R、RApache和操作系统? - Joshua Ulrich
@Joshua Ulrich:R版本2.10.1,可能是RApache 1.1.9(发行版上没有日期,但在今年7月底是最新的),操作系统为Solaris2.10。 - dnagirl
你能以某种方式获取错误的回溯吗?另外,诺顿关于你链接的安全报告相当令人担忧...http://safeweb.norton.com/report/show?url=filebin.ca 不知道这是否是你文件中的真正风险还是他们从该网站得出的一般想法,但值得关注。 - Joris Meys
@Joris Meys:关于这个文件的问题确实令人不安。我的本地版本只是一个 .csv 文件,没有引起任何警报。我会寻找另一个文件转储站点,并删除有问题的链接。 - dnagirl
1
我检查了文件本身,你的文件没有给出任何信息。因此,问题在于网站。我进一步检查了一下,显然这是由于filebin.ca上托管的恶意文件引起的问题。顺便说一句,我使用Dropbox(www.dropbox.com)进行文件共享(以及其他事情)。尝试了很多方法,但是在设置这个之后,我再也没有寻找其他东西了。值得一试。 - Joris Meys
1个回答

2
这个错误表明你的数据出了问题。我建议你尝试以下步骤:
  • 在实际调用plot()函数等之前,通过save(x, y, z, ..., file="/tmp/dbg.RData")保存你的(相关)数据。
  • 然后,在“正常”的R会话中从已保存的文件中加载所有相关数据,并进行检查和比较。
  • 这样可以帮助你定位数据问题,以便通过更多的健全性检查等方法来避免你的实际代码崩溃。

这是非常好的建议。我使用write.table(MDist.median ,file=fn,row.names=F)保存了数据。通过write.table()生成的文件在“正常”的R中处理时没有错误。但是使用save()方法会完全重现错误。奇怪的是,对我来说,生成的数据框看起来是一样的。 - dnagirl
1
似乎save()的数据框没有将第一列视为因子,但是write.table()的数据框却这样做了。所以我更改了代码,明确设置了我的数据框的因子,现在一切都正常了! - dnagirl
太好了。很高兴能帮上忙。 - Dirk Eddelbuettel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接