هل يتناول هذا المسار هياكل البيانات في R، مثل المتجهات وإطارات البيانات؟
ليس أساساً. أنواع البيانات الخاصة بـ R هي المتجهات الذرية، والقوائم (التي يمكن أن تتداخل)، والمصفوفات (matrices)، وإطارات البيانات، والعوامل (factors)؛ وهي ما تغطيه معظم الأدلة إلى هياكل البيانات في R، ودورة R من Coddy تعلّمها. أما هذا المسار فهو المعنى في علوم الحاسوب: المكدسات والطوابير والقوائم المترابطة وجداول التجزئة والأكوام وأشجار البادئات والأشجار والرسوم البيانية، تُبنى بلغة R ثم تُستخدم في الترتيب والاستدعاء الذاتي وخوارزميات الرسوم البيانية.
هل R مناسبة لهياكل البيانات والخوارزميات؟
تصلح، مع بعض الاحتكاك. فـ R مصممة للإحصاء المتجهي (vectorized)، لا للهياكل المكونة من عقد مترابطة، لذا تحتاج القائمة المترابطة أو الشجرة إلى تفكير أكثر مما في Python، ونادراً ما تُجرى مقابلات البرمجة بلغة R. أما للمحلل، فهذا الاحتكاك هو القيمة نفسها: معرفة أن تكبير متجه داخل حلقة زمنه تربيعي، أو أن البيئة جدول تجزئة، هي ما يجعل شيفرة R تتوسع لتلائم البيانات الحقيقية.
كيف تنشئ جدول تجزئة (hash map) في R؟
باستخدام بيئة (environment): h <- new.env()، ثم h[[key]] <- value للتخزين وh[[key]] للقراءة، التي تعطي NULL عند غياب المفتاح. البيئات قائمة على التجزئة، ومفاتيحها سلاسل نصية، ولها دلالات المراجع، لذا فالدالة التي تغيّر بيئة تغيّرها لمن استدعاها أيضاً، بخلاف المتجه أو القائمة. أما القائمة المسمّاة فتبدو كقاموس لكنها تتصرف كقيمة: غيّرها داخل دالة وستبقى نسخة المستدعي كما هي.
هل يفشل الاستدعاء الذاتي العميق في R؟
قد يفشل. افتراضياً يحدّ options(expressions = 5000) من عمق تداخل التقييم، والاستدعاء الذاتي العميق، كالبحث بالعمق أولاً على امتداد سلسلة طويلة، يتوقف بالخطأ evaluation nested too deeply. ورفع قيمة هذا الخيار يمنحك بعض المساحة؛ أما الحل الموثوق فمكدس صريح داخل حلقة، وهو الهيكل الذي تبنيه في الخطوة الأولى.
ما الدورات في هذا المسار التي لا تُدرَّس بلغة R؟
ثلاث دورات. البرمجة الديناميكية وسلسلة مقابلات Python تُدرَّسان بلغة Python، وعمليات البتات بلغة C++. وتجدها مُدرجة بعد الخطوات، ولكل منها رابط يفتحها بلغتها. والبرمجة الديناميكية تنتقل مباشرة، إذ يكون جدول النتائج المحفوظة في R متجهاً محجوزاً مسبقاً، أما معاملات C++ & و| و^ و<< فتصبح الدوال bitwAnd وbitwOr وbitwXor وbitwShiftL.
هل أحتاج إلى معرفة R قبل بدء هذا المسار؟
المتجهات والقوائم والدوال والحلقات والفهرسة بدءاً من 1 على الأقل. إن كانت هذه جديدة عليك، فدورة R من Coddy توصلك إلى ذلك أولاً مجاناً، ويبدأ هذا المسار من حيث تنتهي.