आर

2015-06-01 7 views
10

में खोलने से पहले फ़ाइल आकार की जांच कैसे करें I इसे आर में लोड करने से पहले फ़ाइल का आकार कैसे देख सकता हूं?आर

उदाहरण के लिए:

http://math.ucdenver.edu/RTutorial/titanic.txt

मैं फ़ाइल के आकार के आधार पर एक फ़ाइल को खोलने का इष्टतम आदेश का उपयोग करना चाहते हैं।

+2

'file.info' शायद तुम क्या चाहते है। – cory

+0

https://stackoverflow.com/questions/20921593/how-to-determine-the-file-size-of-a-remote-download-without-reading-the-entire-f शायद आप –

उत्तर

5
library(RCurl) 
url = "http://math.ucdenver.edu/RTutorial/titanic.txt" 
xx = getURL(url, nobody=1L, header=1L) 
strsplit(xx, "\r\n") 
+0

बहुत अच्छा धन्यवाद – Rhodo

13

उपयोग file.info()

file.info("data/ullyses.txt") 

        size isdir mode    mtime    ctime    atime uid gid 
data/ullyses.txt 1573151 FALSE 664 2015-06-01 15:25:55 2015-06-01 15:25:55 2015-06-01 15:25:55 1008 1008 

तब स्तंभ size बुलाया निकालें:

file.info("data/ullyses.txt")$size 
[1] 1573151 
+0

और यदि चाहते हैं इसे "http:" से लोड करने से पहले आकार मापने का कोई तरीका है? – Rhodo

+1

आपको 'download.file()' का उपयोग करना पड़ सकता है और फिर फ़ाइल आकार को स्थानीय रूप से जांचना पड़ सकता है। – Andrie

1

आप इसके आकार को जानने से पहले फ़ाइल डाउनलोड करने के लिए नहीं करना चाहते हैं, तो आप कुछ इस तरह की कोशिश कर सकते हैं:

नोट: यह केवल मैक या लिनक्स में काम करेगा।

file_url = 'http://math.ucdenver.edu/RTutorial/titanic.txt' 
curl_cmd = paste('curl -X HEAD -i', file_url) 
system_cmd = paste(curl_cmd, '|grep Content-Length |cut -d : -f 2') 

ऊपर एक स्ट्रिंग system() का उपयोग कर निष्पादित करने के लिए एक साथ पैक जाएगा। curl_cmd स्ट्रिंग केवल फ़ाइल के शीर्षलेख प्राप्त करने के लिए कर्ल को बताती है।

system_cmd शीर्ष अतिरिक्त पार्स पर स्ट्रिंग पैक हेडर को पार्स करने और बस फ़ाइल को निकालने के लिए।

अब, system() पर कॉल करें और आउटपुट पर पकड़ने के लिए आर को बताने के लिए intern = TRUE तर्क का उपयोग करें।

b <- system(system_cmd, intern = TRUE) 
## % Total % Received % Xferd Average Speed Time Time  Time Current 
##        Dload Upload Total Spent Left Speed 
## 0  0 0  0 0  0  0  0 --:--:-- --:--:-- --:--:-- 0 
## curl: (18) transfer closed 

यह फ़ाइल के लिए केवल शीर्षलेख डाउनलोड करेगा और फाइलसाइज प्राप्त करने के लिए इसे पार्स करेगा। अब b बाइट्स में फाइलसाइज होगा।


तो फिर तुम कैसे फ़ाइल खोलने के लिए, या प्रिंट कुछ अनुकूल तरह तय कर सकते हैं:

print(paste("There are", as.numeric(b)/1e6, "mb in the file:", file_url)) 
## [1] "There are 0.055692 mb in the file: http://math.ucdenver.edu/RTutorial/titanic.txt" 
+0

यह अच्छा होगा अगर कोई ऐसा समाधान साझा कर सके जो सभी होस्ट वातावरण में काम करता हो। मैंने लगभग पांच मिनट के लिए 'आरसीआरएल' में झुकाव की कोशिश की लेकिन बहुत दूर नहीं आया। – neerajt

+1

https://stackoverflow.com/questions/20921593/how-to-determine-the-file-size-of-a-remote-download-without-reading-the-entire-f –

+0

बहुत बढ़िया! बहुत बेहतर। – neerajt