วิธีจัดการกับข้อผิดพลาด r: ตัวดำเนินการ $ ไม่ถูกต้องสำหรับเวกเตอร์อะตอมมิก


ข้อผิดพลาดทั่วไปที่คุณอาจพบใน R คือ:

 $ operator is invalid for atomic vectors

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามเข้าถึงองค์ประกอบของเวกเตอร์อะตอมมิกโดยใช้ตัวดำเนินการ $

“อะตอมมิกเวกเตอร์” คือวัตถุข้อมูลหนึ่งมิติใดๆ ที่สร้างขึ้นโดยใช้ฟังก์ชัน c() หรือ vector() ใน R

น่าเสียดายที่ $ ไม่สามารถใช้เพื่อเข้าถึงองค์ประกอบของเวกเตอร์อะตอมได้ คุณควรใช้วงเล็บคู่ [[]] หรือฟังก์ชัน getElement() แทน

บทช่วยสอนนี้จะแชร์ตัวอย่างวิธีจัดการกับข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการสร้างข้อความแสดงข้อผิดพลาด

สมมติว่าเรากำลังพยายามใช้ ตัวดำเนินการ $ เพื่อเข้าถึงองค์ประกอบของเวกเตอร์ต่อไปนี้ใน R:

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#display vector
x

a B C D E
1 3 7 6 2

#attempt to access value in 'e'
x$e

Error in x$e: $ operator is invalid for atomic vectors

เราได้รับข้อผิดพลาดเนื่องจากการใช้ตัวดำเนินการ $ เพื่อเข้าถึงองค์ประกอบของเวกเตอร์อะตอมไม่ถูกต้อง เรายังสามารถตรวจสอบได้ว่าเวกเตอร์ของเรานั้นเป็นอะตอมมิกจริงๆ:

 #check if vector is atomic
is. atomic (x)

[1] TRUE

วิธีที่ # 1: เข้าถึงองค์ประกอบโดยใช้วงเล็บคู่

วิธีหนึ่งในการเข้าถึงองค์ประกอบตามชื่อในเวกเตอร์คือการใช้สัญลักษณ์ [[]] :

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#access value for 'e'
x[['e']]

[1] 2

วิธีที่ #2: เข้าถึงองค์ประกอบโดยใช้ getElement()

อีกวิธีหนึ่งในการเข้าถึงองค์ประกอบตามชื่อในเวกเตอร์คือการใช้สัญลักษณ์ getElement() :

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#access value for 'e'
getElement(x, 'e')

[1] 2

วิธีที่ # 3: แปลงเวกเตอร์เป็น data frame และใช้ $operator

อีกวิธีหนึ่งในการเข้าถึงองค์ประกอบตามชื่อในเวกเตอร์คือการแปลงเวกเตอร์เป็นกรอบข้อมูลก่อน จากนั้นใช้ตัวดำเนินการ $ เพื่อเข้าถึงค่า:

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#convert vector to data frame
data_x <- as. data . frame (t(x))

#display data frame
data_x

  a B C D E
1 1 3 7 6 2

#access value for 'e'
data_x$e

[1] 2

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้อธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:

วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: NAs ที่ถูกบังคับโดยการบังคับ
วิธีซ่อมแซมใน R: คำใบ้อยู่นอกขอบเขต
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น

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

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