R یک زبان برنامهنویسی سطح بالا و محیط نرمافزاری رایگان است که عمدتاً برای محاسبات آماری و تحلیل دادهها استفاده میشود. این زبان مورد علاقهی آمارگران، دانشمندان داده و دانشگاهیان به خاطر قابلیتهای قدرتمند دستکاری داده، مدلسازی آماری و گرافیکی است. R مجموعهای وسیع از بستهها را ارائه میدهد که قابلیتهای آن را گسترش میدهد و آن را برای وظایف مختلف در دادهکاوی، بیوانفورماتیک و حتی یادگیری ماشین قابل تطبیق میسازد.
R در اوایل دهه 1990 توسط راس ایهاکا و رابرت گنتلمن در دانشگاه اوکلند، نیوزیلند ایجاد شد. این زبان به عنوان یک زبان متنباز بر اساس زبان برنامهنویسی S که در دهه 1970 در آزمایشگاههای بل توسعه یافته بود، طراحی شد. R به گونهای طراحی شده است که هم به عنوان یک ابزار آماری و هم به عنوان یک زبان برنامهنویسی عمل کند و به کاربران این امکان را میدهد که به راحتی دادهها را دستکاری کرده و خروجیهای گرافیکی با کیفیت بالا تولید کنند.
در طول سالها، R جامعه کاربری رو به رشدی را به خود جلب کرد و یک اکوسیستم بستههای مرتبط قابل توجه به نام CRAN (شبکه آرشیو جامع R) را ایجاد کرد. این شبکه به کاربران این امکان را میدهد که کتابخانههای مختلفی را که قابلیتهای R را گسترش میدهند، دانلود و نصب کنند. تا اوایل دهه 2000، R شروع به جلب توجه در محافل دانشگاهی و صنعتی کرد و به طور مکرر در مقالات تحقیقاتی در حوزههای مختلف ذکر شد.
تا سال 2023، R همچنان یک زبان غالب در علم داده و تحلیل آماری باقی مانده است. این زبان با بهروزرسانیهای منظم، بستههای جدید و یک جامعه فعال که به بهبود و ارتقاء مداوم کمک میکند، تکامل یافته است. R همچنین به خاطر ادغام با سایر زبانهای برنامهنویسی و چارچوبها شناخته شده است که نقش آن را در تحلیل دادههای مدرن تقویت میکند.
R وکتورها را به عنوان یکی از ساختارهای داده اصلی خود معرفی میکند. یک وکتور میتواند چندین مقدار از یک نوع را در خود نگه دارد که برای دستکاری دادهها ضروری است.
numbers <- c(1, 2, 3, 4, 5)
فریم داده یکی دیگر از ساختارهای بنیادی است که امکان ذخیرهسازی دادهها را در قالب جدول فراهم میکند که در آن هر ستون میتواند از انواع مختلف باشد.
data <- data.frame(Name=c("Alice", "Bob"), Age=c(25, 30))
R از توابع کلاس اول پشتیبانی میکند که به کاربران این امکان را میدهد که به راحتی توابع را تعریف و فراخوانی کنند.
add <- function(x, y) {
return(x + y)
}
result <- add(5, 3)
ساختارهای کنترلی استاندارد، مانند if
، else
و حلقههای for
، بخشهای جداییناپذیر از نحو R هستند.
for (i in 1:5) {
print(i)
}
R دارای قابلیتهای ترسیم داخلی گستردهای است که امکان ایجاد تجسمها را با یک فراخوانی تابع فراهم میکند.
plot(data$Age, main="Age Plot", xlab="Index", ylab="Age")
کاربران میتوانند بستههای اضافی را مستقیماً از CRAN از طریق R با استفاده از تابع install.packages()
نصب کنند.
install.packages("ggplot2")
R از لیستها پشتیبانی میکند که میتوانند انواع مختلط را در خود نگه دارند و محیطهایی که دامنه متغیرها را تعریف میکنند.
my_list <- list(name="Alice", age=25, height=5.5)
رشتهها در R میتوانند با استفاده از توابع داخلی مانند paste()
برای الحاق دستکاری شوند.
greeting <- paste("Hello", "World")
R از عملیات وکتوری استفاده میکند که امکان پردازش دستهای بر روی ساختارهای داده را فراهم میکند.
squared <- numbers^2
فاکتورها برای مدیریت دادههای دستهای استفاده میشوند و به R این امکان را میدهند که آنها را به طور مناسب در طول تحلیل مدیریت کند.
categories <- factor(c("High", "Medium", "Low"))
چندین IDE در میان توسعهدهندگان R محبوب هستند:
R به عنوان یک زبان تفسیر شده عمل میکند و از مفسر R استفاده میکند که امکان اجرای فوری کد R را فراهم میکند. بسته ابزار R اجزای لازم برای ساخت بستههای R را فراهم میکند اگر به اشتراکگذاری کد خود علاقهمند هستید.
به طور معمول، یک پروژه R با اسکریپتها در دایرکتوری R/
، دادهها در پوشه data/
و مستندات در پوشه docs/
ساختاربندی میشود. کاربران میتوانند پروژه را با استفاده از سیستمهای کنترل نسخه مانند Git بررسی کنند.
R در زمینههای مختلفی استفاده میشود:
caret
و randomForest
.ggplot2
.هنگام مقایسه با زبانهای دیگر مانند Python، R برای تحلیل آماری و تصویرسازی تخصصی است. Python دامنه کاربرد وسیعتری را ارائه میدهد اما به طور فزایندهای با علم داده از طریق کتابخانههایی مانند Pandas و NumPy ادغام میشود. C++ معمولاً اجرای سریعتری را فراهم میکند اما از قابلیتهای آماری R بیبهره است.
Java راهحلهای قوی شرکتی را ارائه میدهد، در حالی که R در تحلیل سریع و تحقیق برتری دارد. زبانهایی مانند SAS یا MATLAB نیز برای تحلیل آماری طراحی شدهاند اما متنباز نیستند، در حالی که R بر اساس مشارکتهای جامعه رشد میکند.
برای ترجمه کد R به سایر زبانها، ابزارهای موجود برای ترجمه از منبع به منبع مانند Rcpp برای R به C++ میتوانند برای عملکرد مفید باشند. علاوه بر این، کاربران میتوانند کتابخانههایی را بررسی کنند که ترجمه به Python را تسهیل میکنند، مانند rpy2
که امکان ادغام توابع و فریمهای داده R را در اسکریپتهای Python فراهم میکند.
علاوه بر این، استفاده از ابزارهایی مانند reticulate
میتواند به ادغام R در محیطهای Python کمک کند و امکان استفاده از R در کنار کتابخانههای Python را به طور یکپارچه فراهم کند.