Cara memperbaikinya: panjang benda yang lebih panjang bukan kelipatan panjang benda yang lebih pendek


Pesan peringatan umum yang mungkin Anda temui di R adalah:

 Warning message:
In a + b: longer object length is not a multiple of shorter object length

Pesan peringatan ini muncul ketika Anda mencoba melakukan operasi pada dua atau lebih vektor yang panjangnya tidak sama.

Tutorial ini membagikan langkah-langkah tepat yang dapat Anda gunakan untuk mengatasi pesan peringatan ini.

Cara mereproduksi pesan peringatan

Misalkan kita menjumlahkan nilai dua vektor berikut di R:

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9, 10)

#add the two vectors
a+b

[1] 7 9 11 13 15

Vektor yang dihasilkan menunjukkan jumlah nilai yang bersesuaian di setiap vektor.

Kami tidak menerima pesan peringatan apa pun karena kedua vektor tersebut memiliki panjang yang sama.

Namun, misalkan vektor kedua mempunyai nilai yang lebih kecil satu dari vektor pertama:

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9)

#add the two vectors
a+b

[1] 7 9 11 13 11

Warning message:
In a + b: longer object length is not a multiple of shorter object length

Karena kedua vektor memiliki panjang yang berbeda, kita memperoleh bahwa panjang benda yang lebih panjang bukanlah kelipatan dari pesan peringatan panjang benda yang lebih pendek .

Penting untuk dicatat bahwa R selalu memaksa perhitungan untuk bekerja dengan menjumlahkan nilai terakhir dari vektor pertama (5) dengan nilai pertama dari vektor kedua (6) untuk mendapatkan nilai akhir 11 .

Jika kita tidak mengetahui panjang setiap vektor, kita dapat menggunakan fungsi length() untuk mencari tahu:

 #display length of vector a
length(a)

[1] 5

#display length of vector b
length(b)

[1] 4

Kita lihat vektor pertama mempunyai 5 nilai sedangkan vektor kedua hanya mempunyai 4 nilai. Inilah sebabnya kami menerima pesan peringatan.

Cara memperbaiki pesan peringatan

Untuk memperbaiki pesan peringatan ini, kita hanya perlu memastikan bahwa kedua vektor memiliki panjang yang sama.

Misalnya, jika kita mengetahui bahwa vektor ba bernilai satu lebih kecil dari vektor a, maka kita cukup menambahkan angka nol pada akhir vektor b :

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9)

#add zero to the end of vector b
b <- c(b, 0)

#add the two vectors
a+b

[1] 7 9 11 13 5

Dalam sebagian besar kasus, kita tidak mengetahui perbedaan panjang antara dua vektor, sehingga kita dapat menggunakan perulangan for berikut untuk menambahkan jumlah nol yang benar ke ujung vektor yang lebih pendek:

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7)

#add zeros to the end of vector b
for (i in (( length (b)+1): length (a)))
  +{b = c(b, 0)}

#add the two vectors
a+b

[1] 7 9 11 13 5

Pesan peringatan hilang karena kita menambahkan cukup angka nol pada akhir vektor b untuk memastikan bahwa kedua vektor memiliki panjang yang sama.

Sumber daya tambahan

Tutorial berikut menjelaskan cara mengatasi kesalahan umum lainnya di R:

Cara memperbaiki di R: Nama tidak sesuai dengan nama sebelumnya
Cara memperbaikinya di R: NA yang diperkenalkan dengan paksaan
Cara memperbaiki di R: indeks di luar batas
Cara memperbaikinya di R: kontras hanya dapat diterapkan pada faktor dengan 2 level atau lebih

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *