मैं निम्नलिखित समाधान के साथ आया, जो 2^32 - 1 बाइट से कम फ़ाइल आकारों के लिए काम करेगा।
आर ऑब्जेक्ट को क्रमबद्ध करने और फ़ाइल में सहेजी जाने की आवश्यकता है, जैसा कि निम्न कोड द्वारा किया गया है।
saveObj <- function(object, file.name){
outfile <- file(file.name, "wb")
serialize(object, outfile)
close(outfile)
}
फिर हम भाग में द्विआधारी डेटा पढ़ते हैं, इस पर ध्यान रखते हुए कि प्रगति पट्टी को कितना पढ़ा और अपडेट किया जा रहा है।
loadObj <- function(file.name){
library(foreach)
filesize <- file.info(file.name)$size
chunksize <- ceiling(filesize/100)
pb <- txtProgressBar(min = 0, max = 100, style=3)
infile <- file(file.name, "rb")
data <- foreach(it = icount(100), .combine = c) %do% {
setTxtProgressBar(pb, it)
readBin(infile, "raw", chunksize)
}
close(infile)
close(pb)
return(unserialize(data))
}
कोड इस प्रकार चलाया जा सकता है:
> a <- 1:100000000
> saveObj(a, "temp.RData")
> b <- loadObj("temp.RData")
|======================================================================| 100%
> all.equal(b, a)
[1] TRUE
अगर हम बेंचमार्क एक भी हिस्सा हम देख प्रगति बार विधि थोड़ी धीमी है में फ़ाइल को पढ़ने के खिलाफ प्रगति बार विधि, लेकिन पर्याप्त नहीं के बारे में चिंता करना।
> system.time(unserialize(readBin(infile, "raw", file.info("temp.RData")$size)))
user system elapsed
2.710 0.340 3.062
> system.time(b <- loadObj("temp.RData"))
|======================================================================| 100%
user system elapsed
3.750 0.400 4.154
इसलिए उपर्युक्त विधि काम करता है, मुझे लगता है कि फ़ाइल आकार प्रतिबंधों के कारण यह पूरी तरह बेकार है। प्रोग्रेस बार केवल उन बड़ी फ़ाइलों के लिए उपयोगी हैं जो पढ़ने में काफी समय लेते हैं।
यह अच्छा होगा अगर कोई इस समाधान से बेहतर कुछ के साथ आ सकता है!
मुझे नहीं पता कि आप प्रगति पट्टी कैसे करते हैं, लेकिन क्या आपने कम से कम टाइमर प्रदर्शित करने पर विचार किया है? मुझे लगता है कि एक चलने वाला टाइमर रन इंतजार कर देता है, और फिर मुझे पता है कि प्रोग्राम अभी भी प्रतिक्रिया दे रहा है। आप एक संदेश प्रदर्शित कर सकते हैं जैसे कि आप 1:32 प्रतीक्षा कर रहे हैं और प्रतीक्षा सामान्यतः ~ 3 मिनट है। एक कॉफी पकड़ो! ' –
दो पिछले प्रश्न: http://stackoverflow.com/questions/5423760/how-do-you-create-a- प्रगति-bar-when-using-the-foreach-function-in-r/ 6170107 # 6170107 और http://stackoverflow.com/q/3820402/583830 'txtProgressBar' और' gtkProgressBar' का सुझाव देते हैं। उत्तरार्द्ध आरजीटीके 2 पैकेज से है। क्या आप ये खोज रहे हैं? – jthetzel
क्षमा करें, मुझे याद आया कि आप पहले से ही 'txtProgressBar' फ़ंक्शन' के बारे में जानते हैं और आपका प्रश्न वास्तव में लोड करने के बारे में है .डेटा फ़ाइलें। – jthetzel