خط مهندسی
مجله ی آنلاین مهندسی

زیر و بم زبان برنامه نویسی R

1 2,319

R یک زبان برنامه‌نویسی و نرم‌افزاری رایگان برای علوم داده و آمار است. این زبان به شکل گسترده‌ای در میان دانشجویان، اساتید و محققان داده‌کاوی و علم آمار مورد استفاده قرار می‌گیرد. موارد استفاده‌ی این زبان نیز به‌طور کلی طراحی نرم‌افزار‌های آماری و تحلیل داده می‌باشد. در رتبه‌بندی ۲۰۲۰ محبوبیت زبان‌های برنامه‌نویسی R در رتبه‌ی نهم جای گرفته است.

تاریخچه زبان برنامه‌نویسی R

زبان برنامه‌نویسی R، نتیجه‌ی ترکیب پیاده‌سازی زبان S با مفاهیم دامنه‌ی واژگانی (lexical scoping)می‌باشد و از Scheme الهام گرفته است. زبان S در سال ۱۹۷۶ توسط جان چمبرز ساخته شد. بین این دو زبان تفاوت‌های قابل توجهی وجود دارد اما کد‌های S اکثرا بدون تغییر در R اجرا خواهند شد.

R توسط رابرت جنتلمن و راس ایهاکا در دانشگاه آکلند نیوزلند به مرحله‌ی اجرا رسید. نام این دو با R شروع می‌شود و علاوه‌براین R حرف قبلی S در الفبای انگلیسیست، از همین رو این نام برای این زبان برگزیده شد. مسئولیت توسعه‌ی R در ادامه به تیم مرکزی توسعه‌ی R سپرده شد و رابرت جنتلمن عضو این تیم می‌باشد.

رابرت و راس در سال ۱۹۹۲ اتود‌های اولیه‌ی پروژه را زدند؛ در سال ۱۹۹۵ اولین ورژن اجرایی را ساختند و ورژن بتا در ۲۹ فوریه‌ی ۲۰۰۰ عرضه شد.

زبان R

ویژگی‌های کلی

R یک زبان برنامه‌نویسی تفسیر شده است. این زبان در سال‌های اخیر و با توجه به نیاز موجود برای داده‌کاوی محبوبیت ویژه‌ای یافته است. هم‌اکنون شرکت‌های بزرگی همچون گوگل و اوبر برای تحلیل داده‌های موجود و تشخیص استراتژی مناسب از این نرم‌افزار استفاده می‌کنند.

اما بیشترین استفاده از این نرم‌افزار در مراکز علمی و آکادمیک می‌باشد. رتبه‌های بعدی (بر اساس سوال‌های مطرح شده در StackOverflow) به مقاصد درمانی و حکومتی اشاره دارد.

محبوبیت R در استک اورفلو

R دست شما را در کار کردن با داده‌ها باز خواهد گذاشت. امکاناتی در زمینه‌ی خوشه‌بندی یا مدل‌سازی خطی و غیر خطی و همچنین امکان انجام تغییرات گرافیکی در نتیجه‌ی کار، از جمله امتیازات این زبان برنامه‌نویسی محسوب می‌شوند.

R از انواع علائم و عملگر‌های ریاضی پشتیبانی کرده و به شما اجازه می‌دهد سنگین‌ترین فرمول‌ها را وارد آن کنید.

به‌طور کلی این زبان برای دستکاری در داده‌ها، انجام محاسبات و نمایش گرافیکی نتایج طراحی شده است. تلاش گروه توسعه‌ی این نرم‌افزار اضافه کردن امکانات بیشتر برای کار با داده‌ها و انجام محاسبات بوده است. این تلاش‌ها با استفاده‌ی گسترده و محبوبیت بالای کنونی این نرم‌افزار به بار نشسته است.

کاربردهای زبان R

علم داده‌کاوی در دنیای امروز کاربرد و محبوبیت بالایی دارد. تحلیل اطلاعات موجود در مورد مشتریان یک کسب‌وکار یا مراجعین یک مرکز درمانی می‌تواند نتایج کاربردی بسیاری در زمینه‌های بازاریابی یا برای مقاصد عام‌المنفعه ارائه کند.

با یادگیری R می‌توانید به راحتی داده‌های موجود را تحلیل کرده و در صورت نیاز نتیجه‌گیری خود را به‌صورت گرافیکی ارائه نمایید.

 

داده کاوی و R

گاهی برای اثبات سوددهی یک ایده به سرمایه‌گذار نیاز به استفاده از داده‌های آماری خواهد بود. گاهی اوقات نیز برای نوشتن یک مقاله و رسیدن به یک نتیجه‌ی مشخص باید از داده‌کاوی استفاده نمود.

پس لزوم کار با داده طیف گسترده‌ای از دانشگاهیان و ایده‌پردازان را شامل خواهد شد. برای این‌کار R ابزار قدرتمندی می‌باشد.

این زبان همچنین با زبان‌های دیگر همچون C، C++ و Fortran به خوبی ارتباط گرفته و توانایی فراخوانی در موقع اجرا را دارد. برنامه‌نویسان پیشرفته می‌توانند از طریق کد C شی‌های R را کنترل نمایند.

دیگر امکانی که R در اختیارتان قرار می‌دهد تعریف توابع است. با تعریف این توابع شما می‌توانید به شکل دل‌خواهتان با داده‌های مختلف برخورد کنید.

مفهوم پکیج در زبان R چیست؟

پکیج‌ها برای گسترده کردن کاربری R هستند. این پکیج‌ها که عموما توسط کاربران ساخته می‌شوند، تکنیک‌های آماری خاص، خروجی‌های گرافیکی، توانایی‌های import/export و این قبیل چیز‌ها را به نرم‌افزار اضافه می‌کنند. پکیج‌ها عموما با زبان R و گاهی با C، C++ و Fortran نوشته می‌شوند.

یکی دیگر از امکاناتی که وجود پکیج‌ها به شما می‌دهد دسته‌بندی داده‌هاست. این ویژگی بیشتر توسط محققان استفاده می‌شود و ثمر آن ارائه‌ی دقیق‌تر نتایج تحقیق می‌باشد.

تعدادی از این پکیج‌ها در ابتدا وجود دارند اما در حال حاضر، بیش از پانزده‌هزار پکیج توسط کاربران برای R نوشته شده است. این پکیج‌ها را می‌توانید از منابعی همچون گیت‌هاب و امگاهت، یا از منبع مربوط به خود گروه توسعه‌ی R دریافت نمایید.

داده کاوی با R

پکیج‌های R در فضای اینترنت به‌صورت دسته‌بندی شده وجود دارند. به‌طورمثال، اقتصاد، یادگیری ماشین، علوم اجتماعی و… . این یعنی لازم نیست وقت خود را برای امتحان کردن تکنیک‌ها و ابزار‌های مختلف تلف کنید و فقط مواردی که به‌کارتان خواهد آمد را دریافت خواهید کرد. این نیز یکی دیگر از امتیازات R می‌باشد.

همچنین هرکسی می‌تواند پکیچ مخصوص خود را بسازد. مثلا یک متخصص علوم اجتماعی با توجه به نیاز‌های همکاران خود، پکیچی برای دسته‌بندی و نمایش داده‌ها می‌سازد. بدیهیست هرچه تسلط فرد سازنده‌ی پکیج به موضوع بیشتر باشد، ابزار ساخته شده توسط او عمومیت بیشتری خواهد یافت.

زبان R چه محدودیت‌هایی دارد؟

با وجود تمام نکات مثبتی که در بالا گفته شد، سرعت و امنیت پایین از معایب بزرگ R می‌باشد. همچنین این زبان برای مدیریت حافظه نیز بسیار ضعیف عمل می‌کند. پکیج‌ها همانطور که نقطه‌قوت محسوب می‌شوند نقطه‌ی ضعف نیز هستند.

زیرا R بدون پکیج‌هایش یک زبان قدیمی و بدون امکانات است که حتی از گرافیک سه‌بعدی نیز پشتیبانی نمی‌کند. علت این امر اشتراک هسته‌ی مرکزی R با S می‌باشد.

R زبان سختی برای یادگیریست؛ خصوصا برای کسی که تجربه‌ی برنامه‌نویسی قبلی نداشته باشد. همچنین وجود پکیج‌های گسترده و زیاد، تازه‌واردان را گیج و گاهی دلسرد خواهد کرد.

زیرا پیاده‌سازی الگوریتم در بین تعداد بالایی پکیج کار سختی خواهد بود. در کل پیشنهاد می‌شود برای شروع برنامه‌نویسیی به سراغ R نروید و حل مسئله را با زبانی ساده و سریع‌تر بیازموزید.

نصب و استفاده

رابط کاربری گرافیکی Rstudio

پس از نصب زبان R برروی سیستم، نیاز به یکی از رابط‌های گرافیکی خواهید داشت. چندین رابط کاربری گرافیکی موجودند اما Rstudio از همه بیشتر توصیه می‌شود. در این رابط می‌توانید هم با کد و فراخوانی و هم با امکانات خود نرم‌افزار بعضی کار‌ها را انجام دهید. مثلا برای باز کردن یک سری داده در قالب یک Data set هم می‌توانید از گوشه‌ی بالا راست در زبانه‌ی enivroment، بر روی import dataset کلیک کنید و هم کد زیر را اجرا کنید:

acs <- read.csv(url(“آدرس فایل مورد نظر”))

برای نمایش مجموعه‌ داده‌ی لود شده نیز از کد زیر استفاده می‌شود:

View(acs)

‌در کل این Acs متغیری برای دسترسی به دیتاست و کار با آن می‌باشد. برای رسیدن به یک درایه‌ی خاص داریم:

acs[1,3]

فرض کنید می‌خواهیم یک شرط خاص را در مورد یک ماتریس بررسی کرده و اطلاعاتی که آن شرط را دارند استخراج کنیم (query). به‌طورمثال در یک پایگاه‌داده مربوط به اطلاعات ازدواج، زوج‌هایی که سن مرد در آن‌ها بیشتر است:

خواندنی ها

 a <- subset(acs , age_husband > age_wife)

لیست اسامی مورد نظر به همراه سن‌هایشان در متغیر a گذاشته خواهد شد.

استفاده از پکیج

پکیج در واقع کتاب‌خانه‌ایست پر از کد‌ها و توابعی که به شما در مسیر کار با داده‌ها یاری خواهند رساند. پیش‌تر به این مفهوم مفصل‌تر پرداخته شد. متخصصین علوم داده روش‌ها، تست‌ها، شاخص‌های ارزیابی و دیگر ابزار کار با داده را در قالب کد با یکدیگر به اشتراک می‌گذارند.

از آن‌جایی که هرکسی با توجه به نیاز و رشته‌اش، رویکردی خاص در قبال کار با دیتا دارد، به اشتراک‌گذاری آن باعث کمک به دیگر کسانی که با همان رویکرد و در همان زمینه کار می‌کنند می‌شود.

مهم‌ترین منبع پکیج‌های R وب‌سایت CRAN می‌باشد که توسط تیم‌پشتیبانی R ارائه می‌شود. در این منبع تمام کتابخانه‌های موجود برای R به صورت رایگان قابل دانلود می‌باشند.

برای بارگذاری یک پکیج از این کد استفاده می‌شود:

library(name of the package)

برای استفاده از یک تابع موجود در یک پکیج (برای مثال تابع Ver از پکیج Product)نیز داریم:

library(product)
product::ver()

همانطور که می‌بینید، نوشتار این زبان به زبان‌های معروف و سطح بالای برنامه‌نویسی نزدیک بوده و یادگیری آن سخت نخواهد بود.

فرآیند‌های آماری

توابعی به شرح زیر برای بررسی آماری داده‌ها وجود دارد:

نام

command

میانگین

mean(acs$age_husband)

میانه

median(acs$age_husband)

چندک

quantile(acs$age_wife)

واریانس

var(acs$age_wife)

انحراف معیار

sd(acs$age_wife)

 

 نمایش داده‌ها

برای نمایش داده‌ها در قالب نمودارهای مختلف دستور‌های مشخصی هست. مثلا برای نمودار خطی و نقطه‌ای داریم:

plot(x = s$age_husband , y = s$age_wife, type = ‘p’)

نمودار نقطه ای در R

که دستور plot برای نشان‌دادن طرح‌واره‌ی داده‌ها می‌باشد.s یک زیرمجموعه از دیتاست مورد نظر است. درون پرانتز محور افقی و عمودی را به یکی از ستون‌ها نسبت می‌دهیم و type نیز برای مشخص کردن نوع نمودار می‌باشد. P برگرفته از point بیانگر نمودار نقطه‌ای و L برگرفته از line برای نمودار خطیست.

اگر بخواهید توزیع داده‌ها را از طریق هیستوگرام نمایش دهید، دستور زیر به کار می‌آید:

hist(acs$number_children)

هیستوگرام در R

برای نمودار میله‌ای نیز دو خط زیر با کتابخانه‌های ابتدایی R عمل خواهد کرد:

counts <- table(acs$bedrooms)
barplot(counts, main=”Bedrooms Distribution”,  xlab=”Number of Bedrooms”)

نمودار میله ای در R

وضعیت امروزی زبان R

برای کسانی که در زمینه‌ی علم‌داده و آمار کار می‌کنند، R و پایتون دو ابزار برتر هستند. از طرفی خود امر داده‌کاوی در دهه‌ی اخیر به یکی از کار‌های مهم و بین رشته‌ای تبدیل شده است. رشته‌های شبیه به مدیریت و بازاریابی که عملا بر تحلیل داده‌ها استوارند و این امر در آی‌تی و کسب‌وکار‌های دیجیتال به کار با بیگ‌دیتا نیز می‌رسد.

باقی رشته‌ها نیز در حال حاضر برای ارائه‌ی نتایج تحقیقات خود به‌صورت پراکنده نیازمند تحلیل و نتیجه‌گیری از دیتا هستند. همچنین برای ارائه‌ی ایده‌ها در قالب طرح کسب‌وکار نیز کارشناسان بر استفاده از شیوه‌های بصری تاکید دارند.  در نتیجه کار با داده به جزئی لاینفک از حیات آکادمیک و همچنین ورود به بازار کار تبدیل شده است.

از طرفی، R به نسبت کاربردی بودنش در زمینه‌ی کار با دیتا، سادگی منحصر به  فردی نیز دارد. به‌طوری که در بین رقبای خود در این زمینه، نمره‌ی ۴ از ۱۰ برای سختی یادگیری و نمره‌ی ۱۰ از ۱۰ را در زمینه‌ی کاربردی بودن به خود اختصاص می‌دهد. نتیجه‌ی این برتری را می‌توان در افزایش روزافزون محبوبیت این زبان برنامه‌نویسی دید.

جایگاه R در بین رقبا

جستارهای مربوط به R در سایت Stackoverflow، که یکی از معتبر‌ترین سایت‌های مرجع برای برنامه‌نویسان به حساب می‌آید، در سال‌های اخیر سیر صعودی داشته و اخیرا با C برابری کرده است. اوپن‌سورس بودن این زبان و وجود گنجینه‌ای از کتابخانه‌های کاربردی برای آن نیز به حفظ این جایگاه و حتی پیشرفت آن در بین رقبا کمک می‌نماید.

آیا R زبان خوبی برای یادگیری است؟

زبان‌های برنامه‌نویسی مربوط به تحلیل داده همچون پایتون و R، ماجرایی جدا از زبان‌های برنامه‌نویسی دیگر دارند. در واقع نمی‌توان صرفا آن‌ها را انتخاب کرد و یادگیری را شروع نمود. زیرا نیاز به وجود پیش‌زمینه در مورد علم داده و آمار و همچنین توانایی حل مسئله و طراحی الگوریتم برای تحلیل‌های آماری خواهد داشت.

از طرفی هیچ‌کس وقت برای یاد گرفتن دو یا چند ابزار تحلیل داده را نخواهد داشت. شما باید ابتدا تبحر لازم در کار با داده را کسب کرده و سپس یکی از ابزار‌های موجود را انتخاب نمایید. بحث مطرح شده در مورد این زبان‌ها یادگیری رسم‌الخط و نکات اجراییست و حل مسائل به خودتان برمی‌گردد.

اگر شما فهم خوبی از داده داشته باشید، این فهم در پایتون یا R یا حتی اکسل قابل اجرا خواهد بود؛ اما قطعا درجه‌ی راحتی و سختی و جزییات عملیاتی تفاوت‌هایی خواهند داشت.

نتیجه اینکه R بیشتر از یک زبان برنامه‌نویسی، یک ابزار کار با داده است که از برنامه‌نویسی استفاده می‌کند. کاربران آن را نیز بیشتر متخصصان علوم داده و آمار تشکیل می‌دهند. پس برای رفتن به سمت آن باید ابتدا به سمت علم داده رفت و سپس دانش خود را با استفاده از این ابزار روی مجموعه‌های داده پیاده نمود.

آیا R زبان سختی است؟

جواب این سوال در طول زمان دست‌خوش تغییر شده است. در ابتدای عرضه، R زبان سختی بود و مانند زبان‌های برنامه‌نویسی مرسوم ساختار یافته نبود. اما ویژگی مهم آن یعنی اوپن سورس بودن راه را برای اضافه شدن ابزار باز کرد و همین ابزارها بازی را به نفع R تغییر دادند.

زبان R

مهم‌ترین  تاثیر را در این زمینه، مجموعه‌ای از پکیج‌ها که توسط هادلی ویکهام طراحی شده بود داشت. نام این مجموعه tidyverse بود و نمایش گرافیکی و دستکاری داده‌ها را به کاری راحت و پیش‌پا افتاده تبدیل کرد. پیاده‌سازی الگوریتم‌های ماشین لرنینگ نیز توسط پکیج‌هایی مثل Keras و TensorFlow بسیار ساده شده است.

از عملکرد R می‌توان نتیجه گرفت اگر هسته‌ی مرکزی قدرتمندی ندارید، اما کاربردی هستید؛ اوپن‌سورس بودن راهکاری بسیار اثربخش برای توسعه یافتن و تسهیل کار با نرم‌افزار شما خواهد بود. درست مثل R که از یک زبان گیج‌کننده و پیچیده، به زبانی کاربردی و محبوب در بین کاربران تبدیل شد.

 

نظرات
  1. کدرلایف می گوید

    ممنون از این مقاله کاربردی

نظر شما درباره این مطلب

آدرس ایمیل شما منتشر نخواهد شد.