วิธีจัดการกับข้อผิดพลาด 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 ระดับขึ้นไปเท่านั้น