क्यों आर कॉलम और पंक्तियों को पहचानता नहीं है जैसा कि उन्हें माना जाता है?

दिए गए कोड को एक क्षेत्र के मूल्य निकालने और टेक्स्ट फ़ाइल में लिखना है (निर्देशिका में 365 बाइनरी फाइलें हैं)। जिस समस्या का सामना कर रहा हूं वह यह है कि मेरी सभी फाइल 360 पंक्तियों और 720 कॉलम के आकार के साथ बाइनरी हैं। मैंने निर्दिष्ट किया कि इस पंक्ति में:

file2 <- matrix(data=file,ncol=720,nrow=360) 

लेकिन मुझे एक त्रुटि मिली:

मतलब में त्रुटि (फ़ाइल 2 [एक्स, वाई], na.rm = TRUE): सब्सक्रिप्शन सीमाओं से बाहर है।

और फिर मैं उपर्युक्त पंक्ति को फिर से लिखता हूं:

file2 <- matrix(data=file,ncol=360,nrow=720)

मैंने ncol = 360 और nrows = 720 डाला जो सही नहीं है। लेकिन यह काम किया और मुझे कोई त्रुटि नहीं मिली। हालांकि, परिणाम सही नहीं थे।

X <- c(364:369) ;   Y <- c(82:92) #####   for sellected region
extract <- vector()
dir1 <- list.files("C:\\Users\\Climate_Rad_f_GAMMA_%d.img", full.names = TRUE)
listfile<-dir1()
for (i in c(1:365))
{
    conne <-  file(listfile[i], "rb")
    file <-  readBin(conne, double(), size=4,  n=720*360, signed=T)
    file2 <-  matrix(data=file,ncol=720,nrow=360)  
extract[i] <- mean(file2[X,Y],na.rm=TRUE)
    close(conne)
    write.table(extract,"C:\\Users\\sam.txt")
}
0
जोड़ा संपादित
विचारों: 1
इस प्रश्न के पाठकों को पता होना चाहिए कि आज आर-सहायता पर इसे क्रॉस-पोस्ट किया गया था और स्पष्ट रूप से उत्तर दिया गया है: कुंजी यह है कि द्विआधारी फाइलों को ठीक से पढ़ने की आवश्यकता है और एक्स सूचकांक 364: 36 9 आर की पंक्ति, कॉल ऑर्डर का कारण बन रहा था त्रुटि को फेंकने के लिए "[" पहुंच के लिए।
जोड़ा लेखक 42-, स्रोत
क्या आप कोड को बेहतर प्रारूपित नहीं कर सकते?
जोड़ा लेखक betabandido, स्रोत
मैंने इस सवाल को बचाने का प्रयास किया, लेकिन मुझे आपके कुछ कोड के बारे में शिक्षित अनुमान या दो बनाना पड़ा। यह सुनिश्चित करने के लिए कृपया इसकी समीक्षा करें कि यह आपके प्रश्न को दर्शाता है।
जोड़ा लेखक joran, स्रोत
यह अच्छा होगा अगर ओपी उत्तर के जवाब के रूप में उत्तर देने के इच्छुक थे।
जोड़ा लेखक Ben Bolker, स्रोत

1 उत्तर

इस कोड में:

mean(file2[X,Y],na.rm=TRUE)

आप पंक्तियों एक्स और कॉलम वाई का चयन कर रहे हैं। आपके पास 360 पंक्तियां हैं। आप इसे इसके बजाय चाहते हैं:

mean(file2[Y,X],na.rm=TRUE)
0
जोड़ा
धन्यवाद.मैंने ऐसा किया है। मुझे लगता है कि मेरी समस्या यह है कि डेटा सी ++ द्वारा फ्लोट 32 के रूप में उत्पन्न होता है। मैं उन्हें यहां डबल के रूप में परिभाषित कर रहा हूं। आर में केवल पूर्णांक, डबल, असली है। क्या कोई यह जान सकता है कि इनमें से कौन सा फ़्लोट 32 का प्रतिनिधित्व करता है।
जोड़ा लेखक Sami Yemein, स्रोत