الأعمدة والصفوف
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 43 من 64.
df$col وdf[["col"]] يعيدان عمودًا كمتجه عادي، لذا تعمل عليه كل دوال المتجهات. تقبل [[ ]] اسم عمود مخزنًا في متغير:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people$age)
print(mean(people$age))
col <- "city"
print(people[[col]])الناتج:
[1] 36 22 41
[1] 33
[1] "london" "paris" "rome" تأخذ الأقواس المربعة الصيغة [row, column]، مثل المصفوفة. يحدّد الجانب الفارغ كل شيء، ويمكن اختيار الأعمدة حسب الاسم:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[2, ])
print(people[, c("name", "city")])الناتج:
name age city
2 bo 22 paris
name city
1 ada london
2 bo paris
3 cy romeالخلية الواحدة هي df[row, column]، وإسناد قيمة إليها يغيّر القيمة. ويعمل الإسناد إلى عمود بأكمله بالطريقة نفسها:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[3, "age"])
people[3, "age"] <- 42
people$city <- toupper(people$city)
print(people)المخرجات:
[1] 41
name age city
1 ada 36 LONDON
2 bo 22 PARIS
3 cy 42 ROMEللمرور على الصفوف واحدًا تلو الآخر، نفّذ حلقة على seq_len(nrow(df)) واقرأ كل خلية باستخدام df[i, "col"] أو df$col[i]:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
for (i in seq_len(nrow(people))) {
cat(people$name[i], "lives in", people[i, "city"], "\n")
}الناتج:
ada lives in london
bo lives in paris
cy lives in rome التحدي
سهلأكمل person_card(df, i). أعد سطرًا واحدًا لكل عمود في الصف i، name: bo، بحيث يتضمن اسم العمود والقيمة الموجودة في ذلك الصف، وبترتيب الأعمدة.
يقرأ الكود المُ supplied الجدول من الإدخال باستخدام read.csv(text = input): يحتوي السطر الأول على أسماء الأعمدة، وكل سطر تالٍ هو صف واحد، مع فصل القيم بفواصل. يحتوي سطر الإدخال الأخير على i، ويطبع الكود كل سطر مُعاد.
جرّب بنفسك
person_card <- function(df, i) {
# اكتب الكود الخاص بك هنا
character(0)
}
# كود الإدخال/الإخراج المُزوَّد: اتركه كما هو
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input[-length(input)])
i <- as.numeric(input[length(input)])
cat(person_card(df, i), sep = "\n")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهم3المجموعات والعدّ
القيم الفريدةعمليات المجموعاتاختبارات الانتماءالعد باستخدام table()مراجعة - ضيوف الفعالية9إطارات البيانات
إنشاء إطارات البياناتالأعمدة والصفوفتصفية الصفوفالإضافة والترتيبمراجعة - تقرير المبيعاتتدرّب بنفسك: مترجم R عبر الإنترنت