คำถาม R สองข้อ:
- อะไรคือความแตกต่างระหว่างประเภท (ส่งคืนโดย
typeof
) และคลาส (ส่งคืนโดยclass
) ของตัวแปร? ความแตกต่างคล้ายกับในภาษา C ++ หรือไม่? - ประเภทและคลาสของตัวแปรที่เป็นไปได้คืออะไร?
คำถาม R สองข้อ:
typeof
) และคลาส (ส่งคืนโดยclass
) ของตัวแปร? ความแตกต่างคล้ายกับในภาษา C ++ หรือไม่?คำตอบ:
ใน R ทุก "วัตถุ" มีและmode
class
อดีตแสดงถึงวิธีการจัดเก็บวัตถุในหน่วยความจำ (ตัวเลขอักขระรายการและฟังก์ชัน) ในขณะที่วัตถุในภายหลังแสดงถึงประเภทนามธรรม ตัวอย่างเช่น:
d <- data.frame(V1=c(1,2))
class(d)
# [1] "data.frame"
mode(d)
# [1] "list"
typeof(d)
# list
ดังที่คุณเห็นเฟรมข้อมูลถูกเก็บไว้ในหน่วยความจำlist
แต่ถูกรวมไว้ในdata.frame
วัตถุ ส่วนหลังอนุญาตให้ใช้ฟังก์ชันของสมาชิกเช่นเดียวกับฟังก์ชันที่มากเกินไปเช่นprint
ด้วยพฤติกรรมที่กำหนดเอง
typeof
( storage.mode
) มักจะให้ข้อมูลเหมือนกันmode
แต่ไม่เสมอไป กรณีในประเด็น:
typeof(c(1,2))
# [1] "double"
mode(c(1,2))
# [1] "numeric"
สามารถดูเหตุผลเบื้องหลังสิ่งนี้ได้ที่นี่ :
ฟังก์ชั่นที่เฉพาะเจาะจง R typeofผลตอบแทนประเภทของวัตถุที่ R
โหมดฟังก์ชันให้ข้อมูลเกี่ยวกับโหมดของวัตถุในความหมายของ Becker, Chambers & Wilks (1988) และเข้ากันได้กับการใช้งานอื่น ๆ ของภาษา S
ลิงค์ที่ผมโพสต์ดังกล่าวข้างต้นนอกจากนี้ยังมีรายชื่อของทุกพื้นเมืองอาbasic types
(เวกเตอร์รายการอื่น ๆ ) และcompound objects
(ปัจจัยและ data.frames) เช่นเดียวกับตัวอย่างบางส่วนของวิธีการmode
, typeof
และclass
ที่เกี่ยวข้องสำหรับแต่ละประเภท
oldClass(matrix(1:10, 2,5)) # NULL
type
หมายถึงโครงสร้างข้อมูลต่างๆที่มีอยู่ใน R จริงๆการสนทนานี้ใน คู่มือนิยามภาษา Rอาจช่วยให้คุณเริ่มต้นกับวัตถุและประเภทได้
ในทางกลับกันclass
หมายถึงอย่างอื่นใน R มากกว่าที่คุณคาดหวัง จากคู่มือนิยามภาษา R (ที่มาพร้อมกับ R เวอร์ชันของคุณ):
2.2.4 ชั้นเรียน
R มีระบบคลาสที่ซับซ้อน1ซึ่งควบคุมโดยเฉพาะผ่านแอตทริบิวต์คลาส แอ็ตทริบิวต์นี้เป็นเวกเตอร์อักขระที่มีรายการคลาสที่อ็อบเจ็กต์สืบทอดมา ซึ่งเป็นพื้นฐานของฟังก์ชัน "วิธีการทั่วไป" ใน R
แอตทริบิวต์นี้สามารถเข้าถึงและจัดการได้แทบไม่มีข้อ จำกัด จากผู้ใช้ ไม่มีการตรวจสอบว่าออบเจ็กต์มีส่วนประกอบที่เมธอดคลาสคาดหวังจริงๆ ดังนั้นการแก้ไขแอตทริบิวต์คลาสควรกระทำด้วยความระมัดระวังและเมื่อมีการสร้างและบังคับเฉพาะฟังก์ชันควรเลือกใช้