برای مشاهده یافته ها از کلید Enter و برای خروج از کلید Esc استفاده کنید.

نمایش خروجی و کار با متغیرها

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

نمایش محتوا و نتیجه

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

اولین و ساده ترین راه این است که کار خاصی انجام ندهیم و تنها دستور مورد نظر خودمان را در کنسول وارد کنیم.

pi

#> [1] 3.14

sqrt(13)

#> [1] 3.605551

"This is the first test" 
#> [1] "This is the first test"

با وجود این، استفاده از دستور ()print عملیات بالا را به شیوه منظم و سازماندهی شده تری انجام می دهد. شاید برای نمایش نمونه های بالا، این دستور کار خاصی برای ما انجام ندهد، ولی زمانی که با ساختارهای داده ای متفاوت همانند ماتریس ها روبه رو می شویم، قابلیت های دستور ()print (که در بخش های بعدی به آن می پردازیم) نمایان می شوند.

print(pi)

#> [1] 3.14

print(sqrt(13))

#> [1] 3.605551

print("This is the first test") 
#> [1] “This is the first test”

البته دستور ()print یک محدودیت اساسی دارد و آن هم توانایی چاپ (نمایش) یک شی (Object) را در هر زمان دارد. به مثال زیر توجه کنید.

print("Sum of 2 + 2", "is", 4)

#> Error in print.default("Sum of 2 + 2", "is", 4) :

invalid printing digits -2147483648

In addition: Warning message:

In print.default("Sum of 2 + 2", "is", 4) : NAs introduced by coercion

اگرچه انتظار می رفت که نتیجه کد بالا به سادگی نمایش داده شود ولی آنچه دریافت کردیم، جز یک پیغام خطای بلند بالا، چیز دیگری نبود!

شاید مشکل از مثال ما باشد، اجاز دهید مثال را تغییر دهیم.

print("Sum of ", 2+2)

#> [1] "Sum of "

همانطور که می بینید، اینبار هم نتیجه چیزی به غیر آن شد که انتظار می رفت و دستور ()print تنها بخشی از خروجی مورد انتظار را تولید کرد. اگر جایگشت های مختلف برای چنین مثالی را امتحان کنید باز هم چیز خاصی دست ما را نمی گیرد! برای حل این مشکل، دستور ()cat می تواند این نقیصه ()print را رفع کند.

cat("Sum of 2 + 2", "is", 4, "\n")

# Sum of 2 + 2 is 4

درباره دستور ()cat به این نکته توجه کنید که چون این دستور به صورت پیش فرض بین آیتم ها یک فاصله قرار میدهد، برای پایان خط جاری کد، باید یک کاراکتر خط جدید “n\” در انتهای دستور قرار داد. برای اینکه با این موضوع بهتر آشنا شوید، کد بالا را یکبار بدون کارکتر خط جدید اجرا کنید.

تعریف و مقداردهی متغیرها

متغیرها در هر زبانی برنامه نویسی نقش مهم نگه داری از اطلاعات و داده ها را – هرچند به صورت موقتی- دارند و به همین دلیل همواره توصیه می شود که نام های بامعنی برای آن ها انتخاب کنیم تا هم بعدها آن ها را به راحتی به یاد بیاوریم و هم سطح خوانایی برنامه بالاتر برود. در زبان R، برای نامگذاری متغیرها فقط چند محدودیت وجود دارد:

  • در نامگذاری متغیرها تنها می توان از حروف بزرگ و کوچک، اعداد، نقطه و علامت زیرخط (underscore) استفاده کرد
  • نام متغیر نمی تواند با عدد یا علامت زیرخط (underscore) شروع شود
  • اگر نام متغیر با نقطه شروع شود، بلافاصله پس از آن نمی توان از عدد استفاده کرد، یعنی این نام نامعتبر است: 2test.

در R نیازی به تعیین نوع داده ای متغیر (Data Type) نیست و خود R این مساله را برای ما مدیریت می کند. پس، تنها کاری که برای تعریف یک متغیر باید انجام دهیم، تعیین یک نام و انتساب داده مورد نظر به آن است.

برای مقداردهی متغیرها در R چند روش وجود دارد که مرسوم و رایج ترین آن به صورت زیر است.

var.1 <- 12

var.2 <- "test"

البته مشابه بسیاری از زبان های برنامه نویسی دیگر، برای انتساب مقادیر به متغیرها می توان از عملگر مساوی و یا الگوی سمت راست هم استفاده کرد که چندان در R مرسوم نیست و توصیه نمی شود.

var.3 = "another test"
var.4 = 15 + 8
123 -> var.5

برای انتساب چند مقدار به یک متغیر و ایجاد یک بردار، دستور کاربردی ()c مورد استفاده قرار می گیرد. نام این تابع درواقع کوتاه شده combine به معنی ترکیب کردن است و همانطور که نام دستور نشان می دهد، کاربردش هم به همین صورت است.

vec_1 <- c(1,2,3)

vec_1

# [1] 1 2 3

vec_2 <- c("C", "R", "Java")

vec_2

# "C" "R" "Java"

توجه داشته باشید که امکان ایجاد بردارهایی با انواع داده متفاوت وجود ندارد و در صورت انجام این کار، R بدون هیچ گونه پیغام هشدار و اطلاعی، داده های موجود را به یک نوع تبدیل می کند. به عنوان نمونه، در مثال زیر، داده های عددی نیز به رشته تبدیل می شوند.

vec_3 <- c(4, "HTML", 5, "CSS")

vec_3

# [1] "4" "HTML" "5" "CSS"

در مواردی، مانند مدیریت حافظه، لازم است تا بدانیم چه متغیرهایی در برنامه مورد استفاده قرار گرفته اند. برای اطلاع یافتن از این موضوع از دستور ()ls استفاده می شود.

ls() 
# [1] "vec_1" "vec_2" "vec_3"

همچنین می توان اطلاعات بیشتری راجع به نوع داده ای متغیرها بدست آمورد.

ls.str() 
# vec_1 : num [1:3] 1 2 3 
# vec_2 : chr [1:3] "C" "R" "Java" 
# vec_3 : chr [1:4] "4" "HTML" "5" "CSS"

برای حذف متغیرها هم می توان از دستور ()rm استفاده کرد.

rm(vec_1) 
ls() 
[1] "vec_2" "vec_3"