سؤال

أنا أحب Emacs وفاق سطيف الجمع.أنا أحب إرسال خطوط, وظائف, المناطق, و مخازن من التعليمات البرمجية إلى سطر الأوامر التقييم دون استخدام الماوس.

ومع ذلك, لقد لاحظت أن Eval Function القيادة في إيماكس هو أبطأ بكثير من مجرد تشغيل source("fns.R"), حيث fns.R هو الملف الذي يحتوي على وظيفة أريد أن تقييم.

لماذا هذه القضية ؟

هل كانت مفيدة؟

المحلول

وأعتقد أن الناس في على إجابات أفضل بالنسبة لك. ولكن إذا كنت تقيم بخفاء، وتجهيز هو أسرع بكثير. محاولة وضع هذا في ملف .emacs الخاص بك:

(setq ess-eval-visibly-p nil)

نصائح أخرى

أنا فقط أخمن ولكن عندما تقول

  • 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 ') بحيث يمكن أن تكون على يقين من أن السيناريو الخاص بك هو (يقوم باستدعاء المكتبات المناسبة مكتفية ذاتيا، يا مفرداتيا-راقب وظائف لا يتم الرجوع المتغيرات غير مقصودة في الفضاء العالمي الذي كنت قد نسيت لإزالة، وهلم جرا).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top