2013-02-19 22 views
6

मैं एक ऐसा फ़ंक्शन लिख रहा हूं जो कमांड लाइन के माध्यम से आर में पैंडोक का उपयोग करता है। मैं पैंडोक स्थापित करने के लिए आर का उपयोग कैसे कर सकता हूं (मुझे यह भी लगता है कि इसे पथ पर होना होगा जो विंडोज उपयोगकर्ताओं के लिए एक मुद्दा हो सकता है)?जांचें कि कोई प्रोग्राम इंस्टॉल किया गया है

+1

विंडोज कंप्यूटर पर दोनों समाधानों का परीक्षण करना जिनमें पैंडोक था और पैंडोक नहीं था ... यह दोनों कामों की तरह दिखता है। मुझे नहीं पता कि कौन सा समाधान अधिक मजबूत है। – Dason

+3

एक फायदा मैं 'सिस्टम' ('पैंडोक - वी') 'Sys.which 'पर' दृष्टिकोण देख सकता हूं, यह सत्यापित करता है कि यह प्रोग्राम केवल स्थापित नहीं है, बल्कि वास्तव में चलाया जा सकता है। –

+0

@BrianDiggs शानदार !! – agstudy

उत्तर

3

यह सुझाव पूरी तरह से इस प्रश्न के साथ मेरे व्यक्तिगत अनुभव पर आधारित है कि RStudio मेरे उबंटू सिस्टम पर मेरी .bashrc फ़ाइल में जो कुछ भी पढ़ने के लिए प्रतीत नहीं होता है। मैंने cabal install pandoc विधि का उपयोग करके here का उपयोग करके पांडोक स्थापित किया है क्योंकि उबंटू के पैकेज मैनेजर के साथ उपलब्ध पांडोक के हाल के संस्करणों से मुझे आवश्यक सुविधाएं थीं। टर्मिनल से रनिंग आर Sys.which का उपयोग करके पांडोक का अनुमान लगा सकता है, लेकिन आरस्टूडियो का उपयोग करते समय, यह नहीं हो सका। मुझे नहीं पता कि यह विंडोज उपयोगकर्ताओं के साथ एक समस्या है या नहीं!

एक वैकल्पिक/इस मामले में समाधान वास्तव में ठेठ रास्तों जहां उम्मीद Pandoc निष्पादन योग्य पाया जा सकता का एक वेक्टर (अनुमान है कि बहुत से उपयोगकर्ताओं को वास्तव में जहां वे प्रोग्राम इंस्टॉल साथ आसपास futz नहीं है के तहत) पैदा कर रही है । यह जानकारी, उपरोक्त लिंक किए गए इंस्टॉल पेज पर, साथ ही विंडोज के लिए सामान्य C:\\PROGRA~1\\... पथ पर उपलब्ध है।

myPaths <- c("pandoc", 
      "~/.cabal/bin/pandoc", 
      "~/Library/Haskell/bin/pandoc", 
      "C:\\PROGRA~1\\Pandoc\\bin\\pandoc") 
      # Maybe a .exe is required for that last one? 
      # Don't think so, but not a regular Windows user 

जो तुम Sys.which() साथ उपयोग कर सकते हैं (उदाहरण के लिए, Sys.which(myPaths)) और अन्य विचारों को पहले से ही साझा में से कुछ: इस प्रकार, आप Pandoc के पथ के रूप में निम्नलिखित की तरह कुछ हो सकता है।

  • यदि पहला विकल्प विशिष्ट रूप से मेल खाता है, तो कोई समस्या नहीं है: आप सीधे पांडोक को सिस्टम कॉल का उपयोग कर सकते हैं।
  • यदि कोई अन्य विकल्प विशिष्ट रूप से मेल खाता है, तो आप अपने कार्यों को इस तरह से लिख सकते हैं कि आप केवल "पैंडोक" की बजाय अपने सिस्टम कॉल में निष्पादन योग्य के पूर्ण पथ में पेस्ट करें।
  • यदि पहला विकल्प और अन्य विकल्पों में से कोई भी मिलान किया गया है, तो आप केवल पहला विकल्प चुन सकते हैं और आगे बढ़ सकते हैं।
  • यदि कोई मेल नहीं खाता है, तो उपयोगकर्ता को अपने पांडोक स्थापना के पथ के लिए संकेत दें या पांडोक को कैसे इंस्टॉल करें पर एक संदेश प्रदान करें।
+0

यह दृष्टिकोण काम करता है और उपयोगकर्ताओं को चीजों को पुन: कॉन्फ़िगर करने की आवश्यकता नहीं है। लिनक्स और विंडोज +1 दोनों पर काम किया आपने मुझे वह नहीं दिया जो मैंने पूछा था कि मुझे क्या चाहिए था। –

+0

+1! आपके अनुभव को साझा करने के लिए! – agstudy

+0

@agstudy, आपका स्वागत है। आपके और डेसन के दोनों जवाब वास्तव में सबसे पहले दिमाग में आए थे (मैंने एक ही प्रश्न [यहां] [http://stackoverflow.com/a/14376517/1270695) पर एक ही सुझाव दिए थे) लेकिन जब मैंने इसे पहले कोशिश की मेरा जवाब पोस्ट करना, यह काम नहीं किया, इसलिए मुझे थोड़ा और खोदने की जरूरत है;) – A5C1D2H2I1M1N2O1R2T1

3

मुझे लगता है कि आप Sys.which का उपयोग कर सकते हैं और देख सकते हैं कि परिणाम एक खाली स्ट्रिंग है या नहीं।

pandoc.location <- Sys.which("pandoc") 
if(pandoc.location == ""){ 
    print("pandoc not available") 
}else{ 
    print("pandoc available") 
} 
+0

यह मेरे विंडोज़ बॉक्स पर काम करता है लेकिन 'Sys.which ("फ़ायरफ़ॉक्स")' रिटर्न '' '' ', लेकिन' सिस्टम ("फ़ायरफ़ॉक्स खोलें") 'फ़ायरफ़ॉक्स ब्राउज़र लॉन्च करता है ... मुझे आश्चर्य है क्यों। –

+0

मेरा सुझाव भी होगा (मैंने इसे टाइटलर फॉर घोस्टस्क्रिप्ट [यहां] (http://stackoverflow.com/a/14376517/1270695)) का सुझाव दिया है, लेकिन यह किसी कारण से मेरे सिस्टम पर काम नहीं करता है। शायद क्योंकि यह एक कैबल स्थापित था? लेकिन यकीन नहीं है ... – A5C1D2H2I1M1N2O1R2T1

+0

अच्छा बिंदु।मैंने वास्तव में विंडोज़ पर इसका परीक्षण नहीं किया है। मैं सोच रहा हूं कि अगर पैंडोक थोड़ा अलग हो सकता है, हालांकि यह मुख्य रूप से कमांड लाइन उपयोगिता – Dason

8

मैं स्थापित करने के लिए pandoc की जरूरत नहीं है, लेकिन अगर एक कार्यक्रम इस तरह स्थापित किया गया है आम तौर पर मैं परीक्षण:

pandoc.installed <- system('pandoc -v')==0 

उदाहरण का परीक्षण करने के लिए अगर जावा स्थापित किया गया है:

java.installed <- system('java -version') ==0 

java version "1.7.0_10" 
Java(TM) SE Runtime Environment (build 1.7.0_10-b18) 
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode) 
> java.installed 
[1] TRUE 
+1

आप समाधान वही था जो मैंने आपको धन्यवाद देने के लिए कहा था। आनंद ने यह पता लगाया कि मुझे वास्तव में क्या चाहिए जब मुझे नहीं पता था कि मुझे इसकी आवश्यकता है। –

संबंधित मुद्दे