मेरे पास एक स्क्रिप्ट है जो इसे मैन्युअल रूप से आर स्टूडियो में चलाने पर ठीक काम करती है, लेकिन जब मैं इसे किसी अन्य प्रोग्राम से रैपर के माध्यम से चलाता हूं तो काम नहीं करता है।आर डिबगिंग: "केवल 0 को नकारात्मक सबस्क्रिप्ट के साथ मिश्रित किया जा सकता है"
मैं अपने डिबग आउटपुट में यह जानकारी मिलती है:
[912] Error in xj[i] : only 0's may be mixed with negative subscripts
[912] Calls: GetTopN -> cor -> is.data.frame -> [ -> [.data.frame
मैं सही इससे पहले कि मैं त्रुटि मिलती छवि को सहेजते हैं और उसके बाद आर स्टूडियो में लोड जब मैं GetTopN(10)
निष्पादित मैं एक ही त्रुटि मिलती है। हालांकि, अगर मैं आर स्टूडियो के भीतर actionlist<- sqlQuery(channel,al_string)
स्टेटमेंट को फिर से चलाता हूं और फिर GetTopN(10)
निष्पादित करता है, तो यह सब कुछ काम करता है।
मैंने भी गंभीर कॉल से पहले आर स्टूडियो के भीतर छवि को सहेजने की कोशिश की, और फिर GetTopN (10) को निष्पादित करने से पहले इसे रैपर के माध्यम से लोड किया और मुझे एक ही त्रुटि मिली।
मैंने चेक किया और सभी प्रासंगिक चर (सीआरएस, जेड, एक्स, एन) में उचित मान होते हैं। मुझे नहीं पता कि इसका क्या कारण हो सकता है, और मैं वास्तव में कुछ मदद की सराहना करता हूं!
यहाँ (क्रम में) निष्पादित किया जा रहा है:
#INIT:
library(RODBC)
library(stats)
channel<- odbcConnect("data")
crs<-mat.or.vec(3000,5) #will hold correlations
n1<-seq(-33,0)
#Get whole series
z <- sqlQuery(channel,"SELECT RPos,M1,M2,M3,M4 FROM `data`.`z` ")
al_string <- "SELECT RPos,OpenTime FROM z JOIN actionlist on(OpenTime = pTime)"
trim_string<- "DELETE FROM ActionList WHERE OpenTime NOT IN (SELECT OpenTime FROM ReducedList)"
GetTopN<-function(n)
{
for(i in 1:nrow(actionlist))
{
crs[i,1]<-actionlist$OpenTime[i]
for(j in 2:ncol(z))
{
crs[i,j]<-cor(z[actionlist$RPos[i]+n1,j],x[,j])
}
}
avc <- (cbind(crs[,1],rowSums(crs[,2:5])))
sorted <- crs[order(avc[,2], decreasing=T),1]
topx<- head(sorted,n)
bottomx <- tail(sorted,n)
DF<-as.data.frame(c(topx,bottomx),row.names=NULL)
colnames(DF)[1]<-'OpenTime'
sqlSave(channel,dat=DF,tablename='ReducedList',append=F,rownames=F,safer=F)
sqlQuery(channel,trim_string)
}
curpTime <- 1275266400
actionlist<- sqlQuery(channel,al_string)
x<- sqlQuery(channel,paste('SELECT pTime,M1,M2,M3,M4 FROM z WHERE pTime <= ',curpTime,' AND
pTime > ',curpTime,'-(300*34) ORDER BY pTime ASC'))
GetTopN(10)
मैं अपने कार्यक्षेत्र भी अगर यह मदद कर सकता है (4.7MB) को बचाया: workspace अगर मेरे MYSQL डेटाबेस से कनेक्ट करने में मदद मिलेगी, यह होना चाहिए 74.73.17.163:3306
हालांकि यह आपकी समस्या नहीं थी - यह ध्यान देने योग्य है कि कोड उन चीजों के लिए है जो [i, j], जैसे डेटा को बदलते हैं .table इस तरह की त्रुटि उत्पन्न कर सकता है जब वे डेटा.फ्रेम के खिलाफ चलाए जाते हैं। विशेष रूप से, आपके जैसी स्थिति में जहां चीजें एक रैपर में चल रही हैं और आप आवश्यक पैकेज लोड करने में असफल हो सकते हैं। – russellpierce