วิธีแก้ไขใน r: เงื่อนไขมีความยาว > 1 และจะใช้เฉพาะองค์ประกอบแรกเท่านั้น


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

 Warning message:
In if (x > 1) {:
  the condition has length > 1 and only the first element will be used 

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามใช้ฟังก์ชัน if() เพื่อตรวจสอบเงื่อนไข แต่คุณส่งเวกเตอร์ไปยังฟังก์ชัน if() แทนแต่ละองค์ประกอบ

บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้อย่างชัดเจน

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามีเวกเตอร์ต่อไปนี้ใน R:

 #define data
x <- c(2, 3, 1, 1, 5, 7)

ตอนนี้ สมมติว่าเราลองใช้ฟังก์ชัน if() เพื่อตรวจสอบว่าแต่ละค่าของเวกเตอร์ x มากกว่า 1 หรือไม่ จากนั้นให้คูณค่าเหล่านั้นด้วย 2:

 #if value in vector x is greater than 1, multiply it by 2
if (x>1) {
  x*2
}

Warning message:
In if (x > 1) {:
  the condition has length > 1 and only the first element will be used

เราได้รับข้อความเตือนเนื่องจากเราส่งเวกเตอร์ไปยังคำสั่ง if()

คำสั่ง if() สามารถตรวจสอบองค์ประกอบของเวกเตอร์ได้ครั้งละหนึ่งองค์ประกอบเท่านั้น แต่การใช้โค้ดนี้ทำให้เราพยายามตรวจสอบแต่ละองค์ประกอบของเวกเตอร์ในแต่ละครั้ง

วิธีการแก้ไขข้อผิดพลาด

วิธีที่ง่ายที่สุดในการแก้ไขข้อผิดพลาดนี้คือการใช้ฟังก์ชัน ifelse() แทน:

 #if value in vector x is greater than 1, multiply it by 2
ifelse(x>1, x*2, x)

[1] 4 6 1 1 10 14

ตามค่าเริ่มต้น ฟังก์ชัน ifelse() จะตรวจสอบแต่ละองค์ประกอบของเวกเตอร์ทีละรายการ สิ่งนี้ช่วยให้เราหลีกเลี่ยงข้อผิดพลาดที่เราพบก่อนหน้านี้

นี่คือวิธีที่ฟังก์ชัน ifelse() สร้างค่าเอาต์พุตที่สร้างขึ้น:

  • องค์ประกอบแรก (2) มากกว่า 1 ดังนั้นเราจึงคูณด้วย 2 เพื่อให้ได้ 2*2 = 4
  • องค์ประกอบที่สอง (3) มากกว่า 1 ดังนั้นเราจึงคูณด้วย 2 เพื่อให้ได้ 3*2 = 6
  • องค์ประกอบที่สาม (1) ไม่มากกว่า 1 ดังนั้นเราจึงปล่อยให้มันเป็น: 1
  • องค์ประกอบที่สี่ (1) ไม่มากกว่า 1 ดังนั้นเราจึงปล่อยให้มันเป็น: 1

และอื่นๆ

ที่เกี่ยวข้อง: วิธีการเขียน Nested For Loop ใน R

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

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

วิธีแก้ไขใน R: NAs ที่ถูกบังคับโดยการบังคับ
วิธีแก้ไขใน R: dim(X) ต้องมีความยาวเป็นบวก
วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น

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

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