كيفية الإصلاح: عدد العناصر المطلوب استبدالها ليس مضاعفًا لطول الاستبدال
الخطأ الذي قد تواجهه في R هو:
Warning message: number of items to replace is not a multiple of replacement length
يحدث هذا الخطأ عندما تحاول استبدال عدد معين من العناصر في عمود متجه أو إطار بيانات (بافتراض 3 عناصر) بعدد مختلف من العناصر (بافتراض 6 عناصر).
يشرح هذا البرنامج التعليمي بالضبط كيفية إصلاح هذا الخطأ.
كيفية إعادة إنتاج الخطأ
لنفترض أن لدينا إطار البيانات التالي في R مع وجود بعض القيم المفقودة في العمود الأول:
#create data frame df <- data. frame (a=c(3, NA, 7, NA, NA, 14), b=c(4, 4, 5, 12, 13, 18)) #view data frame df ab 1 3 4 2 NA 4 3 7 5 4 NA 12 5 NA 13 6 14 18
لنفترض الآن أننا نحاول استبدال القيم المفقودة في العمود الأول بالقيم الموجودة في العمود الثاني:
#attempt to replace missing values in first column with values in second column df$a[is. na (df$a)] <- df$b Warning message: In df$a[is.na(df$a)] <- df$b: number of items to replace is not a multiple of replacement length
نتلقى خطأ لأننا حاولنا استبدال 3 قيم مفقودة في العمود الأول بـ 6 قيم في العمود الثاني.
كيفية اصلاح الخطأ
أسهل طريقة لإصلاح هذا الخطأ هي ببساطة استخدام عبارة ifelse() :
#replace missing values in column 'a' with corresponding values in column 'b'
df$a <- ifelse(is. na (df$a), df$b, df$a)
#view updated data frame
df
ab
1 3 4
2 4 4
3 7 5
4 12 12
5 13 13
6 14 18
تتحقق عبارة ifelse() مما إذا كانت قيمة العمود “a” فارغة. إذا كان الأمر كذلك، يتم استبدالها بالقيمة المقابلة في العمود “ب”، وإلا يتم تركها بمفردها.
هناك طريقة أخرى لإصلاح هذا الخطأ وهي استبدال جميع القيم المفقودة برقم محدد:
#replace all missing values in column 'a' with zero
df$a[is. na (df$a)] <- 0
#view updated data frame
df
ab
1 3 4
2 0 4
3 7 5
4 0 12
5 0 13
6 14 18
باستخدام هذه الطريقة، يتم استبدال كل قيمة مفقودة في العمود “أ” بصفر.
مصادر إضافية
كيفية الإصلاح في R: NAs التي تم تقديمها عن طريق الإكراه
كيفية الإصلاح في R: الفهرس خارج الحدود
كيفية الإصلاح في R: طول الكائن الأطول ليس مضاعفًا لطول الكائن الأقصر