2012-09-21 16 views
11

आर में, मैं वातावरण चर सेट कर सकते हैं "मैन्युअल", उदाहरण के लिए:की स्थापना वातावरण चर को प्रोग्राम के

Sys.setenv(TODAY = "Friday") 

लेकिन वातावरण चर नाम और मान आर वस्तुओं में जमा हो जाती है, तो क्या?

expr <- paste("Sys.setenv(", var.name, " = '", var.value, "')", sep = "") 
expr 
# [1] "Sys.setenv(TODAY = 'Friday')" 
eval(parse(text = expr)) 

जो काम करता है:

var.name <- "TODAY" 
var.value <- "Friday" 

मैं यह लिखा

Sys.getenv("TODAY") 
# 1] "Friday" 

लेकिन मैं इसे काफी बदसूरत पाते हैं। क्या कोई बेहतर तरीका है? धन्यवाद।

उत्तर

16

आप do.call उपयोग कर सकते हैं, जिसका नाम तर्क के साथ समारोह कॉल करने के लिए:

args = list(var.value) 
names(args) = var.name 
do.call(Sys.setenv, args) 
6

इस प्रयास करें:

.Internal(Sys.setenv(var.name, var.value)) 
+2

+1 लेकिन एक पैकेज में ऐसा नहीं करते हैं, के रूप में यह क्रैन नीतियों के खिलाफ है । –

+0

@ जोशुआउलिच, क्या आप कृपया अपनी टिप्पणी पर विस्तार कर सकते हैं? क्या ऐसा इसलिए है क्योंकि 'आंतरिक' कार्य समान (सख्त) पिछड़े संगतता आवश्यकताओं के अधीन नहीं हैं? – flodel

+3

@flodel: [सीआरएएन रिपोजिटरी नीति] देखें (http://cran.r-project.org/web/packages/policies.html): "सीआरएएन पैकेजों को केवल सार्वजनिक एपीआई का उपयोग करना चाहिए ..." –

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