วิธีแก้ไข: ไม่สามารถบังคับให้วัตถุ (รายการ) พิมพ์ "double" ได้
ข้อผิดพลาดทั่วไปที่คุณอาจพบใน R คือ:
Error: (list) object cannot be coerced to type 'double'
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามแปลงรายการองค์ประกอบหลายรายการเป็นองค์ประกอบตัวเลขโดยไม่ต้องใช้ฟังก์ชัน unlist() ก่อน
บทช่วยสอนนี้จะแชร์ขั้นตอนที่คุณสามารถใช้เพื่อแก้ไขข้อผิดพลาดนี้
วิธีการทำซ้ำข้อผิดพลาด
รหัสต่อไปนี้พยายามแปลงรายการหลายรายการเป็นค่าตัวเลข:
#create list x <- list(1:5, 6:9, 7) #display list x [[1]] [1] 1 2 3 4 5 [[2]] [1] 6 7 8 9 [[3]] [1] 7 #attempt to convert list to numeric x_num <- as. numeric (x) Error: (list) object cannot be coerced to type 'double'
เนื่องจากเราไม่ได้ใช้ฟังก์ชัน unlist() เราจึงได้รับข้อความแสดงข้อผิดพลาด (รายการ) ไม่สามารถบังคับให้พิมพ์ “double” ได้
วิธีการแก้ไขข้อผิดพลาด
ในการแปลงรายการเป็นตัวเลข เราต้องแน่ใจว่าเราใช้ฟังก์ชัน unlist() :
#create list x <- list(1:5, 6:9, 7) #convert list to numeric x_num <- as. numeric (unlist(x)) #display numeric values x_num [1] 1 2 3 4 5 6 7 8 9 7
เราสามารถใช้ฟังก์ชัน class() เพื่อตรวจสอบว่า x_num เป็นเวกเตอร์ที่มีค่าตัวเลขจริงๆ:
#verify that x_num is numeric
class(x_num)
[1] "digital"
เรายังสามารถตรวจสอบได้ว่ารายการดั้งเดิมและรายการตัวเลขมีจำนวนองค์ประกอบเท่ากัน:
#display total number of elements in original list sum(lengths(x)) [1] 10 #display total number of elements in numeric list length(x_num) [1] 10
เราจะเห็นว่าความยาวทั้งสองนั้นสอดคล้องกัน
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้อธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า