Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

القيم الفريدة

جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 12 من 64.

لا يحتوي R على نوع منفصل للمجموعات: المجموعة هي متجه لا يحتوي على قيم مكررة. تعمل unique() على إزالة التكرارات والاحتفاظ بأول ظهور لكل قيمة، بالترتيب الأصلي.

tags <- c("r", "stats", "r", "data", "stats")
print(unique(tags))
print(length(unique(tags)))

الناتج:

[1] "r"     "stats" "data" 
[1] 3

تُرجع duplicated() القيمة TRUE لكل قيمة ظهرت مسبقًا في المتجه. ويكون الظهور الأول FALSE:

ids <- c(7, 3, 7, 9, 3)
print(duplicated(ids))
print(ids[duplicated(ids)])

الناتج:

[1] FALSE FALSE  TRUE FALSE  TRUE
[1] 7 3

تقارن كلتا الدالتين القيم بدقة، لذا فإن "R" و"r" مختلفتان. طبّع النص أولًا عندما لا يكون لحالة الأحرف أهمية:

langs <- c("R", "python", "r", "Python")
print(length(unique(langs)))
print(unique(tolower(langs)))

الناتج:

[1] 4
[1] "r"      "python"

تعمل unique() مع الأرقام أيضًا، وتعرض sort(unique(x)) القيم المميّزة بترتيب تصاعدي. وتحسب sum(duplicated(x)) عدد العناصر المكرّرة:

rolls <- c(4, 2, 6, 2, 4, 4)
print(sort(unique(rolls)))
print(sum(duplicated(rolls)))

الناتج:

[1] 2 4 6
[1] 3
challenge icon

التحدي

سهل

أكمل count_distinct(tags). أرجِع عدد العلامات المختلفة عند تجاهل حالة الأحرف: تُحتسب R وr مرة واحدة.

يقرأ الكود المُقدَّم العلامات كسطر مفصولة بفواصل ويطبع العدد المُعاد.

جرّب بنفسك

count_distinct <- function(tags) {
  # اكتب الكود الخاص بك هنا
  0
}

# كود الإدخال/الإخراج المُزوَّد: أبقه كما هو
input <- suppressWarnings(readLines(file("stdin")))
cat(count_distinct(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم R عبر الإنترنت