วิธีการซ่อมแซมใน 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: การเปลี่ยนมีความยาวเป็นศูนย์

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

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