زبان آر توسط راس ايهاکا و رابرت جنتلمن در دانشگاه آوکلند نيوزلند ساخته شد و در حال حاضر توسط تيم توسعه هسته آر که جان کمبرس يکي از اعضاي آن است، مشغول كار روي آن است. نام آر از حرف اول اسم راس ايهاکا و رابرت جنتلمن دو مولف زبان آر گرفته شده است. زبان آر بخشي از پروژه GNU است که کد منبع آن بصورت رايگان و تحت مجوز GNU General Public license و نگارش باينري و اجرايي آن براي نسخههاي مختلف سيستم عامل از جمله لينوکس قابل دريافت است. اين زبان از يک رابط خطفرمان براي اجرا کردن کدهاي خود استفاده ميکند، اما رابطهاي گرافيکي آن نيز موجود است. اين رابطها نيز براي تمامي سيستمعاملهايي که آر روي آنها قابل نصب است نيز وجود دارد. زبان آر تعداد زيادي از تکنيکهاي آماري و گرافيکي را فراهم آورده است که شامل مدلهاي خطي و غيرخطي، آزمونهاي آماري قديمي، طبقهبندي و دستهبندي است. آر نيز مانند اس همچون يک زبان برنامهنويسي طراحي شده که اجازه ميدهد با افزودن توابع، عمليات جديدي را تعريف کرد. کاربران پيشرفته ميتوانند با زبانهايي همچون C و جاوا کدهايي بنويسند که بهصورت مستقيم اشياي آر را دستکاري کند. آر انعطافپذير است و کاربران ميتوانند بستههايي را براي توابعي مشخص يا محيطي خاص، براي آن طراحي کنند. آر يک زبان شيءگراي قوي بهشمار ميآيد که بسيار سادهتر از زبانهاي ديگر برنامهنويسي آماري است. همچنين اين نرمافزار قابليت توليد گرافهاي پيچيده و با کيفيت مناسب چاپ را دارد. ويژگيهاي ديگر زبان R همانطور که گفته شد، زبان آر يک رابط خط فرماني مانند زبانهاي بيسبك و پايتون دارد. کدهاي اين زبان نيز بصورت اسکريپت هستند يعني نياز به کامپايل شدن ندارند و در هر لحظه اجرا ميشوند و از لحاظ Syntax گرامري شبيه به کدهاي جاوااسکريپت است. زبان آر از برنامهنويسي رويهاي و از برنامهنويسي شيءگرا توسط توابع عمومي پشتيباني ميکند. بگذاريد قواعد گرامري و نحوه برنامهنويسي اين زبان برنامه نويسي را با ذ کر چند مثال بيان کنيم. ابتدا نياز است که مفسر زبان آر را از نشاني زير دريافت کنيد: http://www.r-project.org/ پس از نصب، نخست مفسر آر را از خط فرمان اجرا کنيد. همانطور که گفتيم، اين زبان براي تحليل آماري است پس بهطبع انواع دادههاي آن بهگونهاي هستند که با محاسبات آماري بيشتر درگير ميشوند. بنابراين برخي از انواع دادههايي که در ديگر زبانهاي برنامهنويسي موجود است در اين زبان وجود ندارد. يکي از اين انواع دادهها، بردار است، بردار را ميتوان مانند يک مجموعه در نظر گرفت و روي عناصر آن مجموعه ميتوان عمليات انجام داد. براي ساخت بردار از متد سي استفاده ميشود، اين متد اعدادي را بهعنوان آرگومان ورودي دريافت ميکند که از اين اعداد براي تشکيل يک بردار استفاده ميشود. براي مثال، عبارت زير نمايانگر يک بردار است: X=c(10,2,3.4,4,12,0.5) براي نمايش مقدار بردار کافيست در خط فرمان عبارت x را بزنيد و سپس اينتر را فشار دهيد يا از تابع print استفاده کنيد. روي توابع ميتوان عمليات رياضي را انجام داد. مثلا 2 بردار را با هم جمع کنيم. براي اينکار از عملگر «+» مانند بقيه زبانهاي برنامهنويسي استفاده ميشود و همينطور «*»، «-» و نمادهاي ديگر. با استفاده از «&~#@&» ميتوان مقادير يک بردار را بهتوان ? رساند. يکي ديگر از توابع که روي بردارها محاسبه انجام ميدهد، تابع mean است. اين در واقع ميانگين دادههاي درون يک بردار را مشخص ميکند. تابع ديگر تابع sum است که عناصر يک بردار را باهم جمع ميکند. و تابع length تعداد عناصر يک بردار را مشخص ميکند. يکي ديگر از انواع دادههاي اين زبان ماتريس است. براي تعريف يک ماتريس از تابع matrix استفاده ميکنيم. يک روش ساده براي تعريف يک ماتريس پاس دادن يک بردار به تابع و مشخص کردن تعداد سطرها يا ستونهاي ماتريس است. به مثال زير توجه کنيد: Y=matrix(c(1,2,3,4,5,6),nrow=2) اين کد يک ماتريس با 6 عنصر و 2سطر و 3 ستون مشخص ميکند. طبعا مشخص است اگر بين تعداد عناصر بردار و تعداد سطر و ستونها اختلافي وجود داشته باشد با خطا مواجه ميشويد. روي ماتريسها هم ميتوان کارهاي مختلفي را انجام داد. مثلا با استفاده از تابع det ميتوان دترمينان يک ماتريس را حساب کرد. اما ميرسيم به تعريف توابع. توابع در زبان آر مانند بقيه زبانهاي برنامهنويسي است يعني چند متغير ورودي و يک نوع خروجي و يک نام ساختن تابع در زبان آر از الگوي زير پيروي ميکند: [functionname]=function([inputparameters]){ return([outputparameters]) } توابع ميتوانند خروجي نداشته باشند. براي مثال تابعي مينويسيم که يک عدد و يک بردار را گرفته و عدد را در عناصر بردار ضرب کرده و يک ماتريس با تعداد سطرهايي برابر عدد ورودي را برگرداند. test=function(v,n){ return(matrix(v*n,nrow=n)) } براي نمايش اين بردار از توابع نمايشي زبان آر استفاده ميکنيم. يکي از اين توابع hist است که نمودار هيستوگرام بردار متناظر که بهعنوان ورودي دريافت کرده را رسم ميکند. براي آشنايي بيشتر با زبان R به نشاني زير مراجعه کنيد: اميربهاالدين سبطالشيخ