মোড, শ্রেণি এবং আর অবজেক্টের ধরণ


39

আমি ভাবছিলাম মোড, শ্রেণি এবং আর অবজেক্টের ধরণের মধ্যে পার্থক্য কী? একটি আর অবজেক্টের ধরণ টাইপফ () ফাংশন, মোড মোড () দ্বারা এবং শ্রেণি দ্বারা শ্রেণি () দ্বারা প্রাপ্ত করা যেতে পারে।

এছাড়াও অন্য কোনও অনুরূপ ফাংশন এবং ধারণাগুলি যা আমি মিস করেছি?

ধন্যবাদ এবং শুভেচ্ছা!


2
str (পরিবর্তনশীল) আপনার সেরা বন্ধু।
ব্র্যান্ডন বার্টেলসেন

2
এছাড়াও দেখুন আর: স্ট্যাক ওভারফ্লোতে ভেরিয়েবল প্রশ্নের ধরণ এবং শ্রেণি
লিও

উত্তর:


21

class()সংজ্ঞায়িত / কি "টাইপ" একটি বস্তুর জন্য আর সুতরাং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং দৃষ্টিকোণ থেকে সনাক্ত করতে ব্যবহৃত হয়

> x <- 1:3
> class(x)
[1] "integer"

"পূর্ণসংখ্যা" পদ্ধতিযুক্ত যে কোনও জেনেরিক ফাংশন ব্যবহার করা হবে।

typeof()আর এর দৃষ্টিকোণ থেকে বস্তুর "প্রকার" mode()দেয় , যখন বেকার, চেম্বারস এবং উইল্কস (1988) এর দৃষ্টিকোণ থেকে বস্তুর "প্রকার" দেয়। পরবর্তী ভাষা আর ভাষা সংজ্ঞা ম্যানুয়াল অনুসারে অন্যান্য এস প্রয়োগকারীগুলির সাথে আরও সুসংগত হতে পারে ।

আমি সম্ভবত typeof()বেশিরভাগ ক্ষেত্রে ব্যবহারের দিক থেকে ভুল করতাম যদি না এটি আর কমপ্লেক্সকে সংকলিত কোডগুলিতে পাস করার জন্য না হয়, যেখানে storage.mode()দরকারী হবে।

উপরের লিঙ্ক হিসাবে আর ভাষা সংজ্ঞাতে এটি কার্যকরভাবে আলোচনা করা হয়েছে।


3
কেন এত দৃষ্টিকোণ আছে? আমি বিভ্রান্তি ছাড়া আর কোনও লাভ দেখছি না।
স্মিভিকিপিডিয়া

1
@ এসএমউইকিপিডিয়া কারণ আর এর একটি heritageতিহ্য রয়েছে যাতে এস-প্লাস এবং এস অন্তর্ভুক্ত রয়েছে এবং পরবর্তীকালের ভাষাটি কালক্রমে বিকশিত হয়েছিল। এছাড়াও, ব্যবহারকারীরা যে বস্তুগুলি তৈরি করতে পারে এবং বেস অবজেক্টের ধরণের মধ্যে পার্থক্য করার প্রয়োজন রয়েছে।
মনিকা পুনরায় ইনস্টল করুন - জি সিম্পসন

@ এসএমউইকিপিডিয়া কারণ এটি কেবল আর। একই কারণে আমাদের <-এবং =ভেরিয়েবল অ্যাসাইনমেন্টের জন্য।
আন্দ্রে টেরা

9

থেকে: https://www.mail-archive.com/r-help@r-project.org/msg17169.html :

'মোড' হ'ল তাদের মূল কাঠামো অনুযায়ী বস্তুর পারস্পরিক একচেটিয়া শ্রেণিবিন্যাস ification 'পারমাণবিক' মোডগুলি সংখ্যাসূচক, জটিল, চরিত্র এবং যৌক্তিক। রিকার্সিভ অবজেক্টের মোড রয়েছে যেমন 'তালিকা' বা 'ফাংশন' বা আরও কয়েকটি। একটি বস্তুর একটি এবং কেবল একটি মোড রয়েছে।

'শ্রেণি' হ'ল এমন একটি সম্পত্তি যা কোনও বস্তুর জন্য নির্ধারিত হয় যা এটি নির্ধারণ করে যে জেনেরিক ফাংশনগুলি এর সাথে কীভাবে কাজ করে। এটি পারস্পরিক একচেটিয়া শ্রেণিবিন্যাস নয়। কোনও বস্তুর যদি নির্দিষ্ট কোন সংখ্যক ভেক্টর এর মতো নির্দিষ্ট কোন শ্রেণি নির্ধারিত না থাকে তবে এটির শ্রেণিটি সাধারণত প্রচলিতভাবে তার মোডের মতো হয়।

কোনও অবজেক্টের মোড পরিবর্তন করা প্রায়শই 'জবরদস্তি' বলে called ক্লাস পরিবর্তন না করে কোনও বস্তুর মোড পরিবর্তন হতে পারে।


1

ক্লাস এবং টাইপফের মধ্যে প্রধান পার্থক্যটি হ'ল প্রথমটি ব্যবহারকারী দ্বারা সংজ্ঞায়িত করা যায় তবে প্রকারটি পারে না। উদাহরণস্বরূপ, একটি তালিকা নির্ধারণ করুন

> x<-list("a",c(1,2))

> # x is a list
> class(x)
[1] "list"
> # class can be user defined
> class(x)<-"newclass"
> class(x)
[1] "newclass"

> typeof(x)
[1] "list"
# you cannot assign a different type using typeof()
> typeof(x)<-"newclass"
Error in typeof(x) <- "newclass" : could not find function "typeof<-" 

কোনও ব্যবহারকারী সংজ্ঞায়িত অবজেক্টকে একটি নির্দিষ্ট শ্রেণীর নাম দেওয়া প্রোগ্রাম লিখতে খুব কার্যকর। এটি ব্যবহারকারীর সংজ্ঞায়িত অবজেক্টগুলিকে একইরকমভাবে ট্যাগ করতে দেয় যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষায় ঘটে থাকে to


এবং এর Rজন্য ডকুমেন্টেশন অনুসারে , "মূল পার্থক্য" সম্পর্কে জোর দেওয়া ভুল। কোনও অবজেক্টের একটি বৈশিষ্ট্য যা এর অভ্যন্তরীণ স্টোরেজ মোড নির্বিশেষে নির্ধারিত হতে পারে, যখন "টাইপফ কোনও বস্তুর (আর্টিকাল) প্রকার বা স্টোরেজ মোড নির্ধারণ করে।" একটিতে যৌক্তিক বৈশিষ্ট্য বর্ণনা করা হয় অন্যটি কোনও বস্তুর শারীরিক বৈশিষ্ট্য। typeofclassclass
whuber
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.