در این مقاله به این میپردازم که چگونه میتوانید یک کد در R را بهصورت خودکار در سیستمعامل ویندوز (Windows) اجرا کنید. در این مثال ساده هدف من آن است کدی ایجاد کنم که هر پنج دقیقه یکبار به مدت ۱۵ دقیقه یک عدد تصادفی از توزیع نرمال تولید و به همراه زمان تولید عدد تصادفی نتیجه را در قالب فایل CSV ذخیره کند.
در ابتدا کد تولید عدد تصادفی را در R به شرح زیر مینویسم:
1 2 3 4 5 6 7 | setwd("C:/Users/FarzadM/Desktop/code") df <- data.frame(time = Sys.time(), random_num = rnorm(1, mean = 10, sd = 5)) write.table(df, 'data.csv', append = TRUE, sep = ',', row.names = FALSE, col.names = FALSE) |
من بر روی صفحه دسکتاپ کامپیوترم، یک پوشه به نام code ایجاد و داخل آن فایل اسکریپت کد بالا را تحت عنوان sample_code.R ذخیره کردم. در کد بالا، ابتدا نشانی فضای کاری را روی پوشه code تنظیم کردم، یک قالب داده (Data Frame) در R ساختم که ستون اول آن با استفاده از تابع Sys.time زمان اجرای کد را معین و ستون دوم با استفاده از تابع rnorm یک عدد تصادفی از توزیع نرمال با میانگین ۱۰ و انحراف معیار ۵ ایجاد میکند. درنهایت، با استفاده از تابع write.table یک فایل CSV ایجاد و قالب داده را در فایلی به نام data.csv در نشانی فضای کاری ذخیره میکنم. توجه کنید در تابع تابع write.table آرگومان append را برابر TRUE قرار دادم به این معنی که بعد از هر بار اجرای کد نتایج در ادامه فایل CSV ذخیره میشود.
برای آنکه کامپیوتر، کد بالا را بهصورت خودکار اجرا کند، لازم است در ویندوز یک فایل Batch ایجاد کنید و سپس با استفاده از Task Scheduler در ویندوز فایل Batch بر اساس معیاری که شما تنظیم میکنید بهصورت خودکار اجرا گردد. مراحل اجرای چنین کاری را در ادامه بحث کردهام.
ابتدا Command Prompt را فراخوانی کنید. یک روش ساده برای این کار استفاده از کلید میانبر R + Windows است تا پنجره Run باز شود، در قسمت Open عبارت cmd را تایپ کنید تا پنجره Command Prompt باز شود.
در گام بعدی نیاز دارید تا آدرس فایل R.exe را در کامپیوتر خود بدانید. R.exe کدهای R را اجرا میکند. این فایل در جایی که R ذخیره شده، نصب شده است. آدرسی مشابه زیر محل قرارگیری R.exe است:
C:\Program Files\R\R-4.0.2\bin\R.exe
در پنجره Command Prompt باید R.exe فراخوانی و به آن گفته شود که اسکریپت sample_code.R را در پوشه code اجرا کند. به همین خاطر در پنجره Command Prompt دستور زیر را اجرا کنید (شکل-۱):
“C:\Program Files\R\R-4.0.2\bin\R.exe” CMD BATCH “C:\Users\FarzadM\Desktop\code\sample_code.R”
وقتی این دستور را اجرا کنید کامپیوتر از طریق R.exe اسکریپت sample_code.R را اجرا میکند و خروجی آن که یک فایل CSV است که در همان پوشه code ذخیره میگردد. اگر به پوشه code مراجعه کنید خواهید دید که این اتفاق افتاده و یک فایل تحت عنوان sample_code.Rout به همراه یک فایل CSV ایجاد گردیده است.
حال باید یک فایل Batch ایجاد کنید. برای این منظور یک نرمافزار ویرایشگر متن مانند Notepad باز و کل دستوری را که در پنجره Command Prompt اجرا کردید، در آن کپی کنید. یعنی دستور زیر باید کپی شود:
“C:\Program Files\R\R-4.0.2\bin\R.exe” CMD BATCH “C:\Users\FarzadM\Desktop\code\sample_code.R”
فایل Notepad را یکجا ذخیره کنید و اسم دلخواهی به آن بدهید. سپس، پسوند فایل را از .txt به .bat تغییر دهید. برای نمونه من این فایل را روی دسکتاپ با عنوان زیر ذخیره کردم (شکل-۲):
run_sample_code.bat
حال نرمافزار Task Scheduler در ویندوز را فراخوانی و Create Task را انتخاب کنید (شکل-۳). در پنجره General برای Task خود نامی انتخاب کنید. در پنجره Triggers باید بگویید تحت چه شرایطی میخواهید این اسکریپت اجرا شود. فرض کنید من بخواهم هر ۵ دقیقه یکبار به مدت ۱۵ دقیقه این اسکریپت اجرا شود. روی New کلیک و مطابق شکل-۴ تنظیمات را پیادهسازی کنید.
در قسمت پنجره Actions باید بگویید چهکاری انجام شود. در قسمت New در بخش Program/script آدرس فایل Batch را بدهید (شکل-۵). برای من این آدرس به شکل زیر است:
C:\Users\FarzadM\Desktop\run_sample_code.bat
درنهایت OK را بزنید و Task را ایجاد کنید. بهاینترتیب کد موردنظر هر ۵ دقیقه یکبار روی کامپیوتر شما اجرا میگردد. شکل-۶ خروجی فایل CSV را نشان میدهد که هر پنج دقیقه یکبار یک عدد تصادفی از توزیع نرمال تولید شده و به همراه زمان اجرای کد ذخیره گردیده است.