मैंने खुद को save
का उपयोग करके बनाई गई Rdata फ़ाइल में एक या दो डेटा ऑब्जेक्ट्स को अपडेट करने की आवश्यकता की स्थिति में पाया है। अगर मैं फ़ाइल लोड करने के लिए सावधान नहीं हूं, तो मैं फ़ाइल में कुछ ऑब्जेक्ट्स को फिर से सहेजना भूल सकता हूं। उदाहरण के तौर पर, मैं sysdata.rda
(आंतरिक उपयोग के लिए लुक-अप टेबल जिन्हें मैं निर्यात नहीं करना चाहता) में संग्रहीत कुछ वस्तुओं के साथ एक पैकेज पर काम कर रहा हूं और केवल व्यक्तिगत वस्तुओं को अपडेट करने के बारे में चिंता करना चाहता हूं।मौजूदा Rdata फ़ाइल को अद्यतन करना
यदि ऐसा करने का कोई मानक तरीका है तो मैंने काम करने में कामयाब नहीं किया है, इसलिए अपना स्वयं का फ़ंक्शन बनाया है।
resave <- function (..., list = character(), file = stop("'file' must be specified")) {
# create a staging environment to load the existing R objects
stage <- new.env()
load(file, envir=stage)
# get the list of objects to be "resaved"
names <- as.character(substitute(list(...)))[-1L]
list <- c(list, names)
# copy the objects to the staging environment
lapply(list, function(obj) assign(obj, get(obj), stage))
# save everything in the staging environment
save(list=ls(stage, all.names=TRUE), file=file)
}
हालांकि यह ओवरकिल जैसा प्रतीत होता है। क्या ऐसा करने के लिए एक बेहतर/आसान तरीका है?
एक तरफ, क्या मैं यह मानने में सही हूं कि फ़ंक्शन कॉल के बाद किसी फ़ंक्शन के दायरे में बनाया गया नया वातावरण नष्ट हो जाता है?
क्या कोई (या कम से कम मुझे :-)) आश्चर्य करता है कि क्यों 'सेव' में "संलग्न" विकल्प नहीं है। मैं आर-सहायता पूछूंगा और यदि कोई उपयोगी उत्तर है तो यहां वापस आएं। –
ठीक है, मैंने देखा: https://stat.ethz.ch/pipermail/r-help/2006- मार्च/101259.html मूल रूप से वही सुझाव देता है जो उत्तर @flodel प्रदान करता है। व्यक्तिगत रूप से मैं इसे 'एपेंड = टी' विकल्प के रूप में आधार 'सेव' फ़ंक्शन में जोड़ना चाहता हूं, लेकिन यह एक बड़ा सौदा नहीं है। –
मैंने 'as.character (विकल्प (सूची (...)) का उपयोग किया) [- 1 एल]' ('सेव' से कॉपी करना)। मेलिंग सूची प्रतिक्रिया को देखते हुए, 'asarse' का उपयोग' as.character' के बजाय किया जाता है। दो दृष्टिकोणों के पेशेवर/विपक्ष क्या हैं? – seancarmody