通过学习R,我碰到了下面解释here的代码。

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)

我最感兴趣的是此代码,学习"$"美元符号的使用,美元符号引用internal function函数中的特定open.account()。我的意思是这部分:
    ross$withdraw(30)
    ross$balance()
    robert$balance()

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

问题:

1- "$" R中的美元符号function()是什么意思?
2-如何识别在函数中的属性,特别是对于您从其他地方采用的函数(即您没有编写它)?
我使用以下脚本
> grep("$", open.account())
[1] 1 2 3

但是,我想找到一种方法来提取可被“$”引用的内部函数的名称,而不仅仅是通过调用和搜索作为> open.account()的书面代码,这是没有用的。
例如,在open.account()的情况下,我想看到这样的内容:
$deposit
$withdraw
$balance

3-有什么引用资料可以阅读更多吗?
tnx!

最佳答案

$允许您从命名列表中按名称提取元素。例如

x <- list(a=1, b=2, c=3)
x$b
# [1] 2

您可以使用names()查找列表的名称
names(x)
# [1] "a" "b" "c"

这是基本的提取运算符。您可以通过在R中键入?Extract来查看相应的帮助页面。

09-26 22:20