2011-03-15 30 views
4

我有一個R腳本,它從MySQL數據庫中提取數據,處理數據,創建多個圖表和圖表,將這些圖表打印到文件並將文件名作爲字符串返回。它在我們的舊服務器(運行R2.10.1的Solaris 10(32位))上工作正常,但現在它在運行R 2.12.1的新服務器(Centos(64位))上出現錯誤。舊腳本,新服務器,意外錯誤

我不會發布整個腳本,因爲它很長,大部分工作正常。它仍然訪問數據庫,處理數據,創建圖表和圖形,並將它們打印到文件中。它只是不返回文件名。這是錯誤:

Error in save(exp, meta, MDist.median, redgrad.pal, colgrad.pal, phase_starts, : 
    object âx.gcâ not found 
Function brew returned an object of 'try-error'. 

下面是腳本的位:

<% 
Sys.umask(mode="0022") 
fn=tempfile('z_') 
fn.prof<-paste(fn,'prof',sep='.') 
fn.data<-paste(fn,'txt',sep='.') 
fn.r<-paste(fn,'rda',sep='.') 
fn.graph=paste(fn,'pdf',sep='.') 

library(Cairo) 
library(rjson) 
library(DBI) 
library(RMySQL) 
library(reshape) 
library(plyr) 
library('RColorBrewer') 
library(ggplot2) 
library(lattice) 
library(latticeExtra) 
library(hexbin) 


exp_id<-ifelse(is.null(POST$exp_id),0,as.numeric(POST$exp_id)) 
group_id<-ifelse(is.null(POST$groupset_id),0,as.numeric(POST$groupset_id)) 
saveR<-ifelse(is.null(POST$saveR),FALSE,as.logical(POST$saveR)) 
control<-ifelse(is.null(POST$control),'rowH',as.character(POST$control)) 

#open connection to db 
#process data 
#format 

#output 

pdf(fn.graph,title=meta$exp_name) 
dummy <- capture.output(print(plist)) #expensive: 3.56s 
print(dists.med.areaplot) #expensive: 5.67s 
print(dists.med.lplot) 
dev.off() 

####HERE IS PROBLEM#### 
save(exp, meta, MDist.median, 
     redgrad.pal, colgrad.pal, 
     phase_starts, voi, plist, 
     grect, nogrid, dists.med.areaplot, dists.med.lplot,x.gc, file=fn.r) 


#return filenames to calling script 
cat(toJSON(list('filename'=fn.data, 'graph_pdf'=fn.graph,'rfile'=fn.r))) 
%> 

的思考?

ETA:

它歸結到新的服務器是從舊服務器不同的區域設置。錯誤信息應爲:object "x.gc" not found。我發現了這個令人討厭的東西,並且嚴厲地對它說話。問題解決了(它確實有助於獲得清晰的錯誤信息!)

+2

您是否檢查過新環境中的默認語言環境(請參閱:'Sys.getlocale()')是否有所不同? – daroczig 2011-03-15 19:10:59

+0

@daroczig:有趣。老地方是'C'。新語言環境爲'> Sys.getlocale() [1]「LC_CTYPE = en_US.UTF-8; LC_NUMERIC = C; LC_TIME = en_US.UTF-8; LC_COLLATE = en_US.UTF-8; LC_MONETARY = C; LC_MESSAGES = en_US .UTF-8; LC_PAPER = en_US.UTF-8; LC_NAME = C; LC_ADDRESS = C; LC_TELEPHONE = C; LC_MEASUREMENT = en_US.UTF-8; LC_IDENTIFICATION = C「' – dnagirl 2011-03-15 19:33:08

+1

看來,LOCALE阻止了一個合理的讀數該錯誤消息應該讀取'object'x.gc「未找到」。我發現x.gc沒有被創建,現在一切都很好。 – dnagirl 2011-03-15 19:55:46

回答

0

原始海報已回答了問題。這個問題可能被標記爲已回答。

相關問題