2010-10-18 5 views
3

Je travaille sur une application web PHP qui appelle R à travers curl et RApache. La plupart des choses fonctionnent bien. Mais un complot réseau jette cette erreur:Le niveau de niveau de réseau échoue seulement sous RApache

RApache Warning/Error!!!Error in uy + c(-1, 1) : non-numeric argument to binary operator

J'ai essayé sauver les structures de données qui alimentent l'intrigue et de faire la parcelle dans mon R local, mais l'intrigue fonctionne très bien. Donc, je ne peux pas reproduire l'erreur.

Ce sont les bibliothèques chargées lorsque le script est exécuté dans 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) 

Voici un peu du script:

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)) 

Et voici un lien vers un fichier de données. Je l'ai lu dans comme ceci: // lien apparaît peu fiable, donc retirée

données ressemble à ceci:

'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 ... 

Toutes les idées sur ce que le problème est ou comment mieux résoudre ce?

version ETA/info plate-forme

 [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) 
+0

Quelle (s) version (s) de R, RApache et quel système d'exploitation utilisez-vous? –

+0

@Joshua Ulrich: R version 2.10.1, probablement RApache 1.1.9 (pas de dates sur la distribution, mais c'était le plus récent à la fin de ce mois de juillet), OS Solaris2.10 – dnagirl

+0

pourriez-vous obtenir une traceback de l'erreur en quelque sorte? Sur une note, le rapport de sécurité de Norton sur votre lien est plutôt inquiétant ... http://safeweb.norton.com/report/show?url=filebin.ca Je ne sais pas si c'est un risque réel dans votre dossier ou juste une idée générale qu'ils ont du site, mais ça vaut le coup d'oeil. –

Répondre

2

L'erreur odeurs d'un problème avec vos données. Je les opérations suivantes:

  • avant l'appel réel à plot() et al, sauvegarder toutes vos données (pertinentes) via save(x, y, z, ..., file="/tmp/dbg.RData")
  • puis charger toutes les données pertinentes à partir du fichier enregistré dans une R « normale » session et inspecter et comparer
  • cela devrait vous permettre de repérer un problème de données que vous pourriez alors contourner avec plus de vérifications de sécurité, etc. pour empêcher votre code de tomber.
+0

C'est un excellent conseil. J'avais "enregistré" les données avec 'write.table (MDist.median, file = fn, row.names = F)'. Le fichier produit par 'write.table()' ne donne aucune erreur lorsqu'il est traité en 'normal' R. Mais en utilisant la méthode 'save()', l'erreur est reproduite exactement. Chose étrange, les trames de données résultantes me semblent identiques. – dnagirl

+1

Il semble que 'save()' data.frame ne considère pas la première colonne comme un facteur, mais le 'write.table()' d data.frame fait. J'ai donc changé le code pour définir explicitement les facteurs pour mon data.frame et maintenant tout fonctionne! – dnagirl

+0

Sweet.Content d'avoir été utile. –

Questions connexes