आर

2013-05-10 8 views
6

में सिस्टम टीएमपी डायर पढ़ें आर के भीतर से ओएस अस्थायी निर्देशिका को खोजने के लिए क्रॉस-प्लेटफ़ॉर्म विधि क्या है? मैं वर्तमान में उपयोग करता हूं:आर

dirname(tempdir()) 

एक इंटरैक्टिव आर सत्र के भीतर उबंटू और विंडोज दोनों पर नौकरी किसने की थी। हालांकि, जब यह रैपैच के अंदर से बुलाया गया तो यह असफल रहा। RApache में tempdir() का मूल्य हमेशा /tmp है, इसलिए / में dirname(tempdir()) परिणाम है, जो स्पष्ट रूप से गलत है। मैं भी करने की कोशिश की:

Sys.getenv("TMP") 
Sys.getenv("TEMP") 
Sys.getenv("TMPDIR") 

रूप ?"environment variables" ने सुझाव दिया है, लेकिन इनमें से कोई भी Ubuntu में स्थापित किए गए थे। यह /etc/R/* में किसी भी फाइल में सेट नहीं प्रतीत होता है, इसलिए मुझे समझ में नहीं आता कि आर इस मान का पता कैसे लगाता है।

+0

का अनुवाद क्यों किया गया है 'tempdir() 'हमेशा वापस'/tmp' क्यों परेशान है। क्या आपके पास उस डीआईआर तक पहुंच है? – flodel

+0

मुझे लगता है कि रैपैच कुछ कैशिंग को लागू करने के लिए सी स्तर वैश्विक 'R_TempDir' सेट करता है। Https://github.com/jeffreyhorner/rapache देखें – Jeroen

उत्तर

1

वातावरण चर "TMPDIR", "TMP", और "अस्थायी" अगर सी चर R_TempDirtempdir() द्वारा दिए गए मान को संशोधित करने के लिए किया जा सकता सेट नहीं है (हालांकि मुझे यकीन है कि कैसे किया जाता है नहीं कर रहा हूँ) ।

gettmpdir <- function() { 
    tm <- Sys.getenv(c('TMPDIR', 'TMP', 'TEMP')) 
    d <- which(file.info(tm)$isdir & file.access(tm, 2) == 0) 
    if (length(d) > 0) 
    tm[[d[1]]] 
    else if (.Platform$OS.type == 'windows') 
    Sys.getenv('R_USER') 
    else 
    '/tmp' 
} 

इस समारोह पर आधारित है: आप एक पार मंच समारोह है कि एक उचित tmp निर्देशिका के रास्ते वापस आ जाएगी चाहते हैं, और R_TempDir के मूल्य में कोई दिलचस्पी नहीं कर रहे हैं, तो आप कुछ इस तरह इस्तेमाल कर सकते हैं आर स्रोत वितरण से फ़ाइल src/main/sysutils.c में InitTempDir, सी से आर