2012-11-09 9 views
21

में इनपुट फ़ाइल का पूर्ण पथ कैसे प्राप्त करूं, मैं कुछ निर्देशिका में किसी दिए गए CSV फ़ाइल से कुछ आंकड़े प्लॉट करने के लिए प्रतिलेख का उपयोग कर रहा हूं, जो कि मेरी वर्तमान कार्यशील निर्देशिका नहीं है। इस प्रकार मैं इसे कॉल कर सकते हैं:मैं आर

./script.r ../some_directory/inputfile.csv 

अब मैं एक ही निर्देशिका (../some_directory) में अपने आंकड़े उत्पादन करना चाहते हैं, लेकिन मैं कैसे ऐसा करने के लिए पता नहीं है। मैंने इनपुट फ़ाइल के लिए पूर्ण पथ प्राप्त करने का प्रयास किया क्योंकि इससे मैं आउटपुट पथ बना सकता था, लेकिन मुझे यह नहीं पता था कि यह कैसे करें।

उत्तर

34
normalizePath() #Converts file paths to canonical user-understandable form 

या

library(tools) 
file_path_as_absolute() 
+0

यह 2016 – Greg

+2

दोनों के रूप में काम नहीं करता है 'सामान्यizeपाथ ("।")' और 'file_path_as_absolute ("। ") 'अभी भी मेरे लिए 3.2 3.2 पर काम करता है। – MattBagg

+0

@ ग्रेग क्या आप आर के किस संस्करण (एस) को सूचीबद्ध कर सकते हैं, यह पाया कि यह काम नहीं करता है? मैं अपने कार्यक्रम में इसे एकीकृत करने वाला हूं और धन्यवाद, समय से पहले जानना वास्तव में सहायक होगा। – user5359531

2

यहाँ समाधान:

args = commandArgs(TRUE) 

results_file = args[1] 

output_path = dirname(normalizePath(results_file)) 
+0

ऐसा लगता है कि 'dirname()' केवल पथ को मौजूदा फ़ोल्डर से घटा देता है। क्या ऐसा कुछ ऐसा है जो पूरा पथ देगा? – Phillip

0

मुझे लगता है कि लोगों को समाधान के टुकड़े दे दी है, लेकिन इसके बारे में बिल्कुल नहीं। मैं इस का इस्तेमाल किया है:

outputFile = paste(normalizePath(dirname(inputFile)),"\\", "my_file.ext", sep = "") 

आशा है कि यह मदद करता है।