วิธีแก้ไข: ไม่สามารถบังคับให้วัตถุ (รายการ) พิมพ์ "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: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *