วิธีการซ่อมแซมใน r: ข้อผิดพลาดใน sort.int(x, na.last, จากมากไปน้อย, …): 'x' ต้องเป็นอะตอมมิก
ข้อความแสดงข้อผิดพลาดที่คุณอาจพบเมื่อใช้ R คือ:
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...): 'x' must be atomic
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามเรียงลำดับรายการ
ตามค่าเริ่มต้น R สามารถจัดเรียงวัตถุอะตอมมิกเช่นเวกเตอร์ได้เท่านั้น ดังนั้นหากต้องการใช้ sort() กับรายการ คุณต้องใช้ฟังก์ชัน unlist() ก่อน
ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเรามีรายการต่อไปนี้ใน R:
#create list
some_list <- list(c(4, 3, 7), 2, c(5, 12, 19))
#view list
some_list
[[1]]
[1] 4 3 7
[[2]]
[1] 2
[[3]]
[1] 5 12 19
#view class
class(some_list)
[1] "list"
ตอนนี้สมมติว่าเราพยายามเรียงลำดับค่าในรายการ:
#attempt to sort the values in the list
sort(some_list)
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...):
'x' must be atomic
เราได้รับข้อผิดพลาดเนื่องจาก R ไม่สามารถเรียงลำดับรายการได้โดยตรง
วิธีการหลีกเลี่ยงข้อผิดพลาด
เพื่อหลีกเลี่ยงข้อผิดพลาด คุณต้องใช้ฟังก์ชัน unlist() ก่อนดังนี้:
#sort values in list
sort(unlist(some_list))
[1] 2 3 4 5 7 12 19
โปรดทราบว่าเราสามารถจัดเรียงรายการค่าได้สำเร็จโดยไม่มีข้อผิดพลาด เนื่องจากเราใช้ unlist() เป็นครั้งแรก ซึ่งแปลงรายการเป็นเวกเตอร์ตัวเลข
ตามค่าเริ่มต้น R จะเรียงลำดับค่าจากน้อยไปหามาก
อย่างไรก็ตาม เราสามารถใช้ diminishing=TRUE เพื่อเรียงลำดับค่าจากมากไปน้อย:
#sort values in list in descending order
sort(unlist(some_list), decreasing= TRUE )
[1] 19 12 7 5 4 3 2
โปรดทราบว่าตอนนี้ค่าต่างๆ จะถูกจัดเรียงจากมากไปน้อย
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีแก้ไขในอาร์กิวเมนต์ R: เกี่ยวข้องกับจำนวนบรรทัดที่แตกต่างกัน
วิธีแก้ไขใน R: ข้อผิดพลาดในการเลือกอาร์กิวเมนต์ที่ไม่ได้ใช้
วิธีแก้ไขใน R: อาร์กิวเมนต์ที่ไม่ถูกต้อง
วิธีการซ่อมแซมใน R: การเปลี่ยนมีความยาวเป็นศูนย์