Cara menangani di r: objek bertipe "penutupan" tidak dapat didefinisikan lagi
Kesalahan yang mungkin Anda temui di R adalah:
object of type 'closure' is not subsettable
Kesalahan ini terjadi ketika Anda mencoba membuat subset suatu fungsi.
Di R dimungkinkan untuk membuat subset daftar, vektor, matriks, dan bingkai data, tetapi suatu fungsi memiliki tipe “penutupan” yang tidak dapat dijadikan subset.
Tutorial ini menjelaskan dengan tepat cara mengatasi kesalahan ini.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita membuat fungsi berikut di R yang mengambil setiap nilai vektor dan mengalikannya dengan 5:
#define function
cool_function <- function (x) {
x <- x*5
return (x)
}
Inilah cara kita menggunakan fungsi ini dalam praktik:
#define data
data <- c(2, 3, 3, 4, 5, 5, 6, 9)
#apply function to data
cool_function(data)
[1] 10 15 15 20 25 25 30 45
Perhatikan bahwa setiap nilai vektor asli telah dikalikan dengan 5.
Sekarang misalkan kita mencoba membuat subset dari fungsinya:
#attempt to get first element of function
cool_function[1]
Error in cool_function[1]: object of type 'closure' is not subsettable
Kami menerima kesalahan karena tidak mungkin untuk membuat subset objek bertipe “penutupan” di R.
Kita dapat menggunakan sintaks berikut untuk memeriksa apakah fungsi tersebut memang bertipe ‘penutupan’:
#print object type of function
typeof(cool_function)
[1] “closure”
Lebih banyak contoh objek “Penutupan”.
Setiap fungsi di R bertipe “penutupan”. Misalnya, kita akan menerima kesalahan ini jika kita mencoba membuat subset fungsi apa pun di basis R:
#attempt to subset mean function
mean[1]
Error in mean[1]: object of type 'closure' is not subsettable
#attempt to subset standard deviation function
sd[1]
Error in sd[1]: object of type 'closure' is not subsettable
#attempt to subset table function
tabld[1]
Error in table[1]: object of type 'closure' is not subsettable
Bagaimana cara mengatasi kesalahan tersebut
Cara untuk mengatasi kesalahan ini adalah dengan menghindari definisi fungsi yang terlalu rendah.
Misalnya, jika kita ingin menerapkan cool_function sebelumnya hanya pada elemen pertama vektor, kita dapat menggunakan sintaks berikut:
#apply function to just first element in vector
cool_function(data[1])
[1] 10
Kita tidak mendapatkan kesalahan karena kita mengelompokkan vektor dan bukan fungsinya.
Atau kita bisa menerapkan cool_function ke seluruh vektor:
#apply function to every element in vector
cool_function(data)
[1] 10 15 15 20 25 25 30 45
Kami tidak menerima kesalahan karena kami belum mencoba membuat subset fungsi dengan cara apa pun.
Sumber daya tambahan
Tutorial berikut menjelaskan cara mengatasi kesalahan umum lainnya di R:
Cara memperbaikinya: kondisi memiliki panjang > 1 dan hanya elemen pertama yang akan digunakan
Cara memperbaikinya di R: dim(X) harus panjangnya positif
Cara memperbaiki di R: nilai hilang di mana diperlukan benar/salah
Cara Memperbaiki: NAS Diperkenalkan oleh Paksaan