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

العد باستخدام table()

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

table(x) تحسب عدد مرات ظهور كل قيمة. تُسمّى النتيجة باستخدام القيم، مرتبةً أبجديًا، لذا يكون عدد قيمة ما هو t[["value"]]:

votes <- c("tea", "coffee", "tea", "juice", "tea")
t <- table(votes)
print(t[["tea"]])
print(names(t))
print(as.vector(t))

الناتج:

[1] 3
[1] "coffee" "juice"  "tea"   
[1] 1 1 3

sort(t, decreasing = TRUE) يرتّب الأعداد من الأكبر إلى الأصغر. تعطي which.max(t) موضع أكبر عدد؛ وعندما تتساوى الأعداد، تختار القيمة الأولى، وهي القيمة الأولى أبجديًا:

votes <- c("tea", "coffee", "tea", "juice", "coffee")
t <- table(votes)
print(names(t)[which.max(t)])
print(max(t))

الناتج:

[1] "coffee"
[1] 2

القيمة التي لا تحدث مطلقًا لا تكون موجودة في الجدول على الإطلاق، لذا تحقّق باستخدام %in% names(t) قبل قراءتها:

t <- table(c("A", "B", "A"))
for (grade in c("A", "B", "C")) {
  n <- if (grade %in% names(t)) t[[grade]] else 0
  cat(grade, n, "\n")
}

الناتج:

A 2 
B 1 
C 0 

تقوم table() بعدّ الأعداد والقيم المنطقية أيضًا. ولعدّ قيمة واحدة، تكون sum(x == value) أقصر من إنشاء جدول:

rolls <- c(6, 2, 6, 6, 1)
print(sum(rolls == 6))
print(table(rolls > 3)[["TRUE"]])

الناتج:

[1] 3
[1] 3
challenge icon

التحدي

سهل

أكمل vote_winner(votes). أعد الخيار الذي حصل على أكبر عدد من الأصوات متبوعًا بعدده، كما في tea (3 votes). عند تعادل الخيارات، أعد الخيار الذي يأتي أولًا أبجديًا.

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

جرّب بنفسك

vote_winner <- function(votes) {
  # اكتب الكود الخاص بك هنا
  ""
}

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

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

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

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