آموزش رشته ها در زبان برنامه نویسی R و عملیات ها (با مثال و نکات)

با هر عبارتی که درون دو علامت نقل قول (‘ ‘ یا ” “) قرار می گیرد؛ در زبان برنامه نویسی R مانند یک رشته رفتار می شود. در واقع R تمام رشته هایی که درون علامت نقل قول هستند را ذخیره می کنند؛ حتی زمانی که آنها را در علامت نقل قول تکی (یعنی ‘ ‘) قرار می دهید.
رشتهها (Strings) که در زبان R بیشتر با نام دادههای متنی (Character) شناخته میشوند، ساختارهایی برای ذخیره کلمات، جملات و هر نوع اطلاعات غیرمحاسباتی هستند.
برای درک سادهتر، رشته را مثل یک پیام متنی در نظر بگیرید که داخل علامتهای نقلقول قرار گرفته است تا سیستم بداند نباید با آن مثل یک دستور برنامهنویسی یا یک عدد ریاضی برخورد کند.
ویژگیهای مهم رشتهها در R
-
حتی یک حرف هم یک رشته است: در زبان R، هیچ تفاوتی بین یک تکحرف، یک کلمه کوتاه، یا یک پاراگراف طولانی وجود ندارد؛ همه اینها با یک منطق به عنوان داده متنی پردازش میشوند.
-
ارتباط تنگاتنگ با بردارها: همانطور که در بخش بردارها اشاره شد، رشتهها در R به صورت مستقل و رها در سیستم وجود ندارند. حتی اگر شما فقط یک کلمه در سیستم ثبت کنید، زبان R در پسزمینه آن را به عنوان یک «بردار متنی با طول ۱» در نظر میگیرد.
-
اعداد پنهان در لباس متن: اگر یک عدد را داخل علامتهای نقلقول قرار دهید، R با آن دقیقاً مثل یک کلمه برخورد میکند. در نتیجه دیگر نمیتوانید روی آن عملیات ریاضی (مثل جمع یا ضرب) انجام دهید.
کاربرد حیاتی رشتهها در نرمافزارهای مالی
در طراحی سیستمهای فناوری بانکی، مدیریت درست رشتهها اهمیت بسیار بالایی دارد. در نگاه اول شاید به نظر برسد بانکها فقط با «عدد و رقم» سروکار دارند، اما رشتهها نقش پررنگی ایفا میکنند:
-
حفظ صفرهای حیاتی: مواردی مثل «شماره کارت بانکی»، «شماره شبا (IBAN)» یا «کد ملی مشتری» با اینکه ظاهر عددی دارند، باید حتماً به عنوان رشته متنی ذخیره شوند. اگر یک کد ملی که با صفر شروع میشود را به عنوان متغیر عددی ذخیره کنید، ماشین حسابِ سیستم به صورت خودکار صفرهای ابتدایی را بیارزش دانسته و حذف میکند که این باعث از بین رفتن هویت داده میشود!
-
شرح تراکنشها: توضیحاتی که در رسیدها نوشته میشود (مثلاً "انتقال وجه پایا به حساب...") تماماً دادههای متنی هستند که برای استخراج رفتار مالی کاربران پردازش میشوند.
-
تولید پیامکهای پویا: سیستمها با چسباندن رشتههای متنی مختلف به هم، پیامهای خودکار میسازند. (ترکیب: کلمه ثابت "مشتری گرامی " + متغیر نام مشتری + جمله ثابت " ورود شما ثبت شد").
عملیاتهای رایج روی متنها در R
هنگام تحلیل داده در زبان R، معمولاً این سه کار اصلی روی رشتهها انجام میشود:
-
اتصال و جداسازی: چسباندن نام و نامخانوادگی به یکدیگر برای ساخت یک نام کامل، یا برعکس، بریدن یک رشته طولانی برای استخراج اطلاعات خاص (مثلاً جدا کردن کد شهر از یک شماره تلفن طولانی).
-
جستجو و تطبیق الگو: گشتن به دنبال کلمات یا الگوهای خاص در میان میلیونها رکورد. برای مثال، سیستم میتواند تمام شرح تراکنشهایی که شامل کلمه «برگشت وجه» هستند را در کسری از ثانیه اسکن و پیدا کند.
-
استانداردسازی (پاکسازی داده): تبدیل تمام حروف انگلیسی به کوچک یا بزرگ، و یا حذف فاصلههای اضافی (Space) در ابتدا و انتهای نام مشتریان تا دادهها برای ذخیره در پایگاه داده کاملاً یکدست و مرتب باشند.
مثال هایی از رشته های مجاز
مثالهای زیر قوانین مربوط به ایجاد رشته در R را بهتر بیان می کنند.
a <- ‘Start and end with single quote’
print(a)
b <- “Start and end with double quotes”
print(b)
c <- “single quote ‘ in between double quotes”
print(c)
d <- ‘Double quotes ” in between single quote’
print(d)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر به دست می آید:
[۱] “Start and end with single quote”
[۱] “Start and end with double quotes”
[۱] “single quote ‘ in between double quote”
[۱] “Double quote ” in between single quote”
مثال های از رشته های غیر مجاز
e <- ‘Mixed quotes”
print(e)
f <- ‘Single quote ‘ inside single quote’
print(f)
g <- “Double quotes ” inside double quotes”
print(g)
زمانی که اسکریپت بالا را اجرا کنیم؛ نتایج زیر نمی تواند ارائه شود:
Error: unexpected symbol in:
“print(e)
f <- ‘Single”
Execution halted
دستکاری رشته ها
اتصال رشته ها – تابع () paste
رشته های بسیاری در R هستند که با استفاده از تابع () paste ترکیب می شوند. با استفاده از این تابع می توان هر تعداد آرگومان را با یکدیگر ترکیب کرد.
سینتکس
سینتکس پایه برای تابع paste را در زیر مشاهده می کنید:
paste(…, sep = ” “, collapse = NULL)
- … نشان دهنده آن است که هر تعداد آرگومان را می توان ترکیب کرد.
- sep نشان دهنده جداساز بین آرگومان ها است. قرار دادن آن اختیاری است.
- collapse برای محدود کردن فاصله بین دو رشته استفاده شده است. اما فاصله بین دو لغت در یک رشته را تغیرر نمی دهد.
مثال
a <- “Hello”
b <- ‘How’
c <- “are you? “
print(paste(a,b,c))
print(paste(a,b,c, sep = “-“))
print(paste(a,b,c, sep = “”, collapse = “”))
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر حاصل می شود:
[۱] “Hello How are you? “
[۱] “Hello-How-are you? “
[۱] “HelloHoware you? “
قالب بندی اعداد و رشته ها- تابع () format
اعداد و رشته ها را می توان با استفاده از تابع () format به سبکی خاص قالب بندی کرد
سینتکس
سینتکس پایه برای تابع format در زیر آمده است:
format(x, digits, nsmall, scientific, width, justify = c(“left”, “right”, “centre”, “none”))
در ادامه پارامترهایی که استفاده شده است، توضیح داده می شود:
- x بردار ورودی است.
- digits تعداد کل رقم های نشان داده شده می باشد.
- nsmall منیمم تعداد اعدادی است که سمت راست نقطه اعشاری قرار می گیرند.
- scientific برای نمایش نماد های علمی روی TRUE تنظیم شده است.
- width نشان دهنده مینمم عرضی است که با استفاده از فضاهای خالی padding در ابتدا؛ نمایش داده می شود.
- justify برای نمایش رشته ها در سمت چپ، راست یا وسط به کار می رود.
مثال
# Total number of digits displayed. Last digit rounded off.
result <- format(23.123456789, digits = 9)
print(result)
# Display numbers in scientific notation.
result <- format(c(6, 13.14521), scientific = TRUE)
print(result)
# The minimum number of digits to the right of the decimal point.
result <- format(23.47, nsmall = 5)
print(result)
# Format treats everything as a string.
result <- format(6)
print(result)
# Numbers are padded with blank in the beginning for width.
result <- format(13.7, width = 6)
print(result)
# Left justify strings.
result <- format(“Hello”, width = 8, justify = “l”)
print(result)
# Justfy string with center.
result <- format(“Hello”, width = 8, justify = “c”)
print(result)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر حاصل می شود:
[۱] “۲۳٫۱۲۳۴۵۶۸”
[۱] “۶٫۰۰۰۰۰۰e+00” “1.314521e+01”
[۱] “۲۳٫۴۷۰۰۰”
[۱] “۶”
[۱] ” ۱۳٫۷”
[۱] “Hello “
[۱] ” Hello “
شمارش تعداد کاراکترهای یک رشته – تابع ()ncahr
این تابع تعداد کاراکترهای موجود در یک رشته؛ از جمله فاصله های آنها را شمارش می کند.
سینتکس
سینتکس پایه برای تابع ()nchar به صورت زیر است:
nchar(x)
nchar(x)
در ادامه پارامترهای استفاده شده در این سینتکس توضیح داده می شود:
- x ورودی برداری است.
مثال
result <- nchar(“Count the number of characters”)
print(result)
زمانی که ما کد بالا را اجرا می کنیم؛ نتیجه زیر حاصل می شود:
[۱] ۳۰
تغییر موردی- توابع ()toupper و ()tolower
این تابع موارد کاراکتر یک رشته را تغییر می دهد:
سینتکس
سینتکس تابع ()toupper و ()tolower به صورت زیر است:
toupper(x)
tolower(x)
- x در سینتکس بالا ورودی برداری است.
مثال
# Changing to Upper case.
result <- toupper(“Changing To Upper”)
print(result)
# Changing to lower case.
result <- tolower(“Changing To Lower”)
print(result)
زمانی که کد بالا را اجرا می کنیم؛ نتایج زیر حاصل می شود:
[۱] “CHANGING TO UPPER”
[۱] “changing to lower”
استخراج بخش های یک رشته- تابع ()substring
این تابع بخش هایی از یک رشته را استخراج می کند.
سینتکس
سینتکس پایه برای تابع ()substring به صورت زیر است:
substring(x,first,last)
متغیرهایی که در سینتکس بالا به کار رفته اند عبارتند از:
- x که ورودی برداری کاراکتر است.
- first موقعیت اولین کاراکتری است که باید استخراج شود.
- last موقعیت آخرین کاراکتری است که باید استخراج شود.
مثال
# Extract characters from 5th to 7th position.
result <- substring(“Extract”, 5, 7)
print(result)
زمانی که کد بالا را اجرا کنیم؛ نتیجه زیر حاصل می شود:
[۱] “act”
