วิธีแก้ไข: จำนวนสินค้าที่จะเปลี่ยนไม่ใช่ผลคูณของความยาวในการเปลี่ยน
ข้อผิดพลาดที่คุณอาจพบใน R คือ:
Warning message: number of items to replace is not a multiple of replacement length
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามแทนที่องค์ประกอบจำนวนหนึ่งในคอลัมน์เวกเตอร์หรือกรอบข้อมูล (สมมติว่ามี 3 องค์ประกอบ) ด้วยจำนวนองค์ประกอบที่แตกต่างกัน (สมมติว่ามี 6 องค์ประกอบ)
บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้อย่างชัดเจน
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R โดยมีค่าหายไปบางส่วนในคอลัมน์แรก:
#create data frame df <- data. frame (a=c(3, NA, 7, NA, NA, 14), b=c(4, 4, 5, 12, 13, 18)) #view data frame df ab 1 3 4 2 NA 4 3 7 5 4 NA 12 5 NA 13 6 14 18
ตอนนี้ สมมติว่าเราพยายามแทนที่ค่าที่หายไปในคอลัมน์แรกด้วยค่าในคอลัมน์ที่สอง:
#attempt to replace missing values in first column with values in second column df$a[is. na (df$a)] <- df$b Warning message: In df$a[is.na(df$a)] <- df$b: number of items to replace is not a multiple of replacement length
เราได้รับข้อผิดพลาดเนื่องจากเราพยายามแทนที่ค่าที่หายไป 3 ค่าในคอลัมน์แรกด้วยค่า 6 ค่าในคอลัมน์ที่สอง
วิธีการแก้ไขข้อผิดพลาด
วิธีที่ง่ายที่สุดในการแก้ไขข้อผิดพลาดนี้คือการใช้คำสั่ง ifelse() :
#replace missing values in column 'a' with corresponding values in column 'b'
df$a <- ifelse(is. na (df$a), df$b, df$a)
#view updated data frame
df
ab
1 3 4
2 4 4
3 7 5
4 12 12
5 13 13
6 14 18
คำสั่ง ifelse() นี้จะตรวจสอบว่าค่าของคอลัมน์ “a” ว่างเปล่าหรือไม่ หากเป็นเช่นนั้น จะถูกแทนที่ด้วยค่าที่สอดคล้องกันในคอลัมน์ “b” ไม่เช่นนั้นจะปล่อยไว้ตามลำพัง
อีกวิธีในการแก้ไขข้อผิดพลาดนี้คือการแทนที่ค่าที่หายไปทั้งหมดด้วยหมายเลขเฉพาะ:
#replace all missing values in column 'a' with zero
df$a[is. na (df$a)] <- 0
#view updated data frame
df
ab
1 3 4
2 0 4
3 7 5
4 0 12
5 0 13
6 14 18
เมื่อใช้วิธีนี้ แต่ละค่าที่หายไปในคอลัมน์ “a” จะถูกแทนที่ด้วยศูนย์
แหล่งข้อมูลเพิ่มเติม
วิธีแก้ไขใน R: NAs ที่ถูกบังคับโดยการบังคับ
วิธีซ่อมแซมใน R: ดัชนีอยู่นอกขอบเขต
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า