Emacs وفاق سطيف:Eval المنطقة مقابلالمصدر()
سؤال
أنا أحب Emacs وفاق سطيف الجمع.أنا أحب إرسال خطوط, وظائف, المناطق, و مخازن من التعليمات البرمجية إلى سطر الأوامر التقييم دون استخدام الماوس.
ومع ذلك, لقد لاحظت أن Eval Function
القيادة في إيماكس هو أبطأ بكثير من مجرد تشغيل source("fns.R")
, حيث fns.R
هو الملف الذي يحتوي على وظيفة أريد أن تقييم.
لماذا هذه القضية ؟
نصائح أخرى
أنا فقط أخمن ولكن عندما تقول
source("fns.R")
أنت لا تنطوي Emacs/وفاق سطيف في الحوسبة الوقت هو وقت R يأخذ التهم في الملف لهضم ذلك-ربما قليلا جدا ، في حينEval Function
يمر المنطقة إلى Emacs المترجم الذي أرسله (ويفترض سطر) إلى R المحرك ثم هضم في مجزأة.
وهذا من شأنه أن يجعل النهج الثاني أبطأ.
ولكن في المخطط الكبير للأشياء, من يهتم ؟ أنا غالبا ما ترسل كامل المخازن الكبيرة أو المناطق التي تحيط ربما جزء كبير من الثانية ؟ ما زلت أعتقد-كما تقول---أن قدرة (الغنية) محرر الأساسية اللغة التفاعل بهذه الطريقة أمر قوية للغاية.
مجد Emacs المتسللين وفاق سطيف فريق.
إذا أردت تنفيذ عازلة كله - لو كنت في يونيكس / لينكس، يمكنك أيضا أن تبدأ السيناريو الخاص بك مع كوخ:
#!/usr/bin/Rscript
وجعل تنفيذ الملف
chmod 744 myscript.r
و(أتذكر قراءة جوجل يحب مخطوطات ص على أن تنتهي في .R لكن يا جيدا ...) ويمكنك تنفيذ ذلك بهذه الطريقة:
./myscript.r
و، مع الحجج،
./myscript.r arg1 arg2
و(التي استخدمت فعلا لاستدعاء وظيفة R من استدعاء نظام ماتلاب) وفي ملف R الخاص بك قد تستخدم
userargs = tail(commandArgs(),2)
للحصول على arg1 و ARG2. يمكنك أيضا الاستغناء عن كوخ:
R --no-save < myscript.r arg1 arg2
ووهلم جرا. مع ويندوز وأذكر أنه كان
R CMD BATCH myscript.r
وأو شيء بهذا المعنى ... لم تلاحظ تأخر قليلا عند تشغيل الأوامر من خلال ESS (على الرغم من أنني لا أحب ESS <م> غاليا م>) حتى عندما أعرف أريد أن تشغيل المخزن المؤقت كله أنا بدء أحيانا قذيفة في الإطار أدناه النصي R (حيث المخزن المؤقت R سوف يقيم عادة) واستخدام الحيل أعلاه.
ويمكنك أيضا استخدام
echo 'source("myscript.r")' | R --no-save
وكذلك - الاستفادة من استخدام هذه الأساليب على التوالي "المصدر (" myscript.r ")" مباشرة في R أو وجود مخزن مؤقت R هو أنك تبدأ مع مساحة عمل واضح (على الرغم من أنك يجب أن نكون حذرين بأن ما تتمتعون به. لن يتم تحميل Rprofile إلا إذا كنت نسميه "المصدر (" ~ / .Rscript ")" صراحة في "myscript.r ') بحيث يمكن أن تكون على يقين من أن السيناريو الخاص بك هو (يقوم باستدعاء المكتبات المناسبة مكتفية ذاتيا، يا مفرداتيا-راقب وظائف لا يتم الرجوع المتغيرات غير مقصودة في الفضاء العالمي الذي كنت قد نسيت لإزالة، وهلم جرا).