Apa arti dari tanda dolar "$" dalam fungsi R()?

Melalui pembelajaran R, saya baru saja menemukan kode berikut yang dijelaskan di sini.

open.account <- function(total) {
  list(
    deposit = function(amount) {
      if(amount <= 0)
        stop("Deposits must be positive!\n")
      total <<- total + amount
      cat(amount, "deposited.  Your balance is", total, "\n\n")
    },
    withdraw = function(amount) {
      if(amount > total)
        stop("You don't have that much money!\n")
      total <<- total - amount
      cat(amount, "withdrawn.  Your balance is", total, "\n\n")
    },
    balance = function() {
      cat("Your balance is", total, "\n\n")
    }
  )
}

ross <- open.account(100)
robert <- open.account(200)

ross$withdraw(30)
ross$balance()
robert$balance()

ross$deposit(50)
ross$balance()
ross$withdraw(500)

Apa yang paling menarik bagi saya tentang kode ini, mempelajari penggunaan tanda dolar &"$" yang merujuk pada fungsi internal tertentu dalam fungsi open.account(). Maksud saya bagian ini:

    ross$withdraw(30)
    ross$balance()
    robert$balance()

    ross$deposit(50)
    ross$balance()
    ross$withdraw(500)

Pertanyaan:

1- Apa arti dari tanda dolar "$" dalam R fungsi()?
2- Bagaimana cara mengidentifikasi atribut-atributnya di dalam fungsi, khususnya untuk fungsi-fungsi yang Anda adopsi dari fungsi lain (i.e. Anda tidak menulisnya)?
Saya menggunakan skrip berikut

> grep("$", open.account())
[1] 1 2 3

tetapi tidak berguna, saya ingin mencari cara untuk mengekstrak nama fungsi internal yang dapat dirujuk oleh "$" tanpa hanya dengan memanggil dan mencari kode yang tertulis sebagai > open.account() .
Misalnya dalam kasus open.account() saya ingin melihat sesuatu seperti ini:

$deposit
$withdraw
$balance

3- Apakah ada referensi yang bisa saya baca lebih lanjut tentang hal ini?
tnx!

Larutan

$ memungkinkan anda mengekstrak elemen-elemen berdasarkan nama dari daftar bernama. Sebagai contoh


x 
Komentar (0)

Ada empat bentuk operator ekstrak di R: [, [[, $, dan @. Bentuk keempat juga dikenal sebagai operator slot, dan digunakan untuk mengekstrak konten dari objek yang dibangun dengan sistem objek S4, yang juga dikenal sebagai objek yang didefinisikan secara formal di R. Kebanyakan pengguna R pemula tidak bekerja dengan objek yang didefinisikan secara formal, jadi kita tidak akan membahas operator slot di sini.

Bentuk pertama, [, dapat digunakan untuk mengekstrak konten dari vektor, daftar, atau bingkai data.

Bentuk kedua dan ketiga, [[ dan $, mengekstrak konten dari objek tunggal.

Operator $ menggunakan nama untuk melakukan ekstraksi seperti pada anObject$aName. Oleh karena itu, operator ini memungkinkan seseorang untuk mengekstrak item-item dari sebuah daftar berdasarkan nama mereka. Karena data.frame() juga merupakan daftar(), maka operator ini sangat cocok untuk mengakses kolom-kolom dalam sebuah data frame. Meskipun demikian, bentuk ini tidak bekerja dengan indeks yang dihitung, atau substitusi variabel dalam fungsi.

Demikian pula, seseorang dapat menggunakan bentuk [ atau [[ untuk mengekstrak item bernama dari sebuah objek, seperti anObject["namedItem"] atau anObject[["namedItem"]].

Untuk detail lebih lanjut dan contoh-contoh penggunaan masing-masing bentuk operator, silahkan baca artikel saya Bentuk-bentuk Operator Extract.

Komentar (1)

Anda akan sering ingin memilih seluruh kolom, yaitu satu variabel tertentu dari bingkai data. Jika Anda ingin memilih semua elemen dari variabel diameter, misalnya, kedua hal ini akan melakukan triknya: nama_dataframe[,posisi_kolom] nama_dataframe[,"colomn_name"]

namun, ada jalan pintas. Jika kolom Anda memiliki nama, Anda bisa menggunakan tanda $:

dataframe_name$colomn_name

Komentar (0)