r - you - كلمات دلالية




الحصول على أساليب الكائن R (2)

عند إعطاء كائن R تعسفي ، كيف يمكنني الحصول على جميع الأساليب المرتبطة بالكائن؟


تقوم بعض الحزم بتعريف الوظائف التي ليست طرقًا ولكنها مع ذلك مخصصة للاستخدام مع فئة معينة. على سبيل المثال ، تحدد المكتبة (igraph) radius(_) الوظيفة radius(_) ، وهو مخصص للاستخدام على الكائنات في فئة igraph . نظرًا لأن هذه الدوال ليست طرقًا ، showMethods(_) methods(_) و showMethods(_) .

في مثل هذه الحالات ، يمكن أن يكون lsf.str(_) مفيدًا للغاية. فمثلا:

lsf.str("package:igraph")

يتضمن الخط:

radius : function (graph, mode = c("all", "out", "in", "total"))  

يتم استرداد class كائن R مع class . لا توجد كائنات مرتبطة بها في لغة R النموذجية. تحدد فئة الكائن ما هي أساليب الوظيفة التي سيتم تطبيقها عليها. لتحديد الوظائف التي لها طرق مرتبطة بفئة معينة ، ستحتاج إلى اختبار جميع الوظائف المتاحة لمعرفة ما إذا كانت هناك طريقة خاصة بالفصل. على الرغم من ذلك ، ستحاول الدوال العامة استخدام طريقة "افتراضية" في معظم الحالات.

يتم عرض بعض الأساليب المرتبطة بوظيفة S3 العامة مع methods . يتم استرداد طرق وظيفة S4 مع showMethods . لذلك ، بالنسبة إلى ما يمكن أن يسميه معظم الأشخاص "كائنات" ، فإن سؤالك لا معنى له ، ولكن إذا حدث أنك كنت تضم وظائف تحت مصطلح "كائنات" عام (وهو من الناحية الفنية) ، فأجبت.

showMethods(classes="data.frame")
methods(class="data.frame")

ثم هناك مجموعة من الطرق التي يمكن أن يطلق عليها "ضمني" على الرغم من أن اسمها R هو "groupGeneric"

 ?groupGeneric

 methods("Math") # These are "add-on" methods to the primitive Math functions
 [1] Math.data.frame  Math.Date        Math.dates*      Math.difftime    Math.factor     
 [6] Math.mChoice     Math.polynomial* Math.POSIXt      Math.ratetable*  Math.Surv*      
[11] Math.times*     

   Non-visible functions are asterisked
 ?"+"

 methods("Ops")  # The binary operators such as "+", "-", "/"
 [1] Ops.data.frame      Ops.Date            Ops.dates*          Ops.difftime        Ops.factor         
 [6] Ops.findFn          Ops.mChoice         Ops.numeric_version Ops.ordered         Ops.polynomial*    
[11] Ops.POSIXt          Ops.raster*         Ops.ratetable*      Ops.Surv*           Ops.times*         
[16] Ops.ts*             Ops.unit*           Ops.yearmon*        Ops.yearqtr*        Ops.zoo*           

   Non-visible functions are asterisked

وحتى إذا لم تكن قد عرضت فعليًا أعضاء في Math أو عائلة Ops ، لكنك ستراهم في صفحة المساعدة لـ؟ groupGeneric. أنت لا ترى Ops.numeric. يتم توفير طريقة عرض مستوى أقل إلى حد ما عن طريق:

 .Primitive("+")
# function (e1, e2)  .Primitive("+")

هذه سوف رمي خطأ إذا عرضت حجة الطبقة خاطئ.





r