سؤال

أفهم أنه في R لديك بعض أنواع البيانات الأساسية (vector, matrix, list, data.frame) ثم في حزم R لديك بعض الأنواع المتقدمة التي تسمى فئة S3 أو فئة S4 (ppp,owin, spatialPointsDataFrame واشياء أخرى عديدة.بعض الوظائف في حزم R تعمل فقط مع وسيطات من نوع خاص.

أحتاج إلى شرح حول التحويل بين الفئات وأنواع البيانات المختلفة في R:

في بعض الأحيان يمكنني استخدام رمز مثل:

m = c(1, 2, 3, 4)
df = as.data.frame(m)

لكن في حالات أخرى يجب علي استخدام رمز مثل:

shp = readShapeSpatial("polygons.shp")
win = as(shp,"owin")

كيف أعرف بناء جملة as لاستخدامها في أي كائن؟أم أن بناء الجملة: as.foo(originalObject) يعادل دائما as(originalObject, "foo") (هنا foo يشير إلى الفئة التي أريد تحويل الكائن إليها حتى أتمكن من استخدامها في وظيفة تتطلب أن تكون حجتها foo فصل)

لنفترض أنني أستخدم حزمة في R مع فصل دراسي foo.ولدي متغير v الذي ينتمي إلى الطبقة bar (بعبارة أخرى، class(v) يكون bar).كيف أعرف إذا كانت الدالة as(v,"foo") سيعمل؟

هل كانت مفيدة؟

المحلول

as.data.frame هي طريقة S3 يمكنك التحقق منها foo استخدام :

getS3method('as.data.frame','foo')

ولكن أعتقد أنك تبحث عن (كما هو مذكور)

showMethods(coerce)

سيعطيك هذا قائمة بوظائف الإكراه المحددة مسبقًا.

لتعريف وظيفة الإكراه، هناك خيار واحد (هناك العديد من الخيارات مثل setIS , coerce<- والإكراه الضمني من خلال الميراث) هو الاستخدام setAs.هنا مثال:

track <- setClass("track",
                  slots = c(x="numeric", y="numeric"))
setAs("track", "numeric", function(from) from@y)
t1 <- new("track", x=1:20, y=(1:20)^2)
as(t1, "numeric")

الآن إذا قمت بالتحقق باستخدام:

showMethods(coerce)

تحصل على إدخال مع:

from="track", to="numeric"

للحصول على شرح أفضل يجب أن تقرأ مساعدة ("كما") ولكن الموضوع ليس بسيطا جدا.

يحرر لإظهار الإدخالات ذات المسار فقط، يمكنك القيام بذلك على سبيل المثال:

cat(grep('track',showMethods(coerce,printTo=FALSE),value=TRUE))
from="track", to="numeric"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top