R function()中的美元符号“$”是什么意思?
What is the meaning of the dollar sign "$" in R function()?
通过学习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)
我对这段代码最感兴趣的是什么,学习 "$"
美元符号的使用,它指的是 open.account()
函数中的特定 internal function
。我是说这部分:
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- 是否有任何参考资料可供我阅读更多相关信息?
谢谢!
$
允许您按名称从命名列表中提取元素。例如
x <- list(a=1, b=2, c=3)
x$b
# [1] 2
您可以使用 names()
查找列表的名称
names(x)
# [1] "a" "b" "c"
这是一个基本的提取运算符。在R中输入?Extract
即可查看对应的帮助页面。
R中提取运算符有四种形式:[
、[[
、$
和@
。第四种形式也称为插槽运算符,用于从使用 S4 对象系统构建的对象中提取内容,也称为 R 中的正式定义对象。大多数 R 初学者不要使用正式定义的对象,所以我们不会在这里讨论槽运算符。
第一种形式,[
,可用于从向量、列表或数据框中提取内容。
第二种和第三种形式,[[
和$
,从单个对象中提取内容。
$
运算符使用名称来执行提取,如 anObject$aName
中一样。因此,它使人们能够根据名称从列表中提取项目。由于 data.frame()
也是 list()
,它特别适合访问数据框中的列。也就是说,这种形式不适用于计算索引或函数中的变量替换。
同样,可以使用[
或[[
形式从对象中提取命名项,例如anObject["namedItem"]
或anObject[["namedItem"]]
。
有关使用运算符的每种形式的更多详细信息和示例,请阅读我的文章 Forms of the Extract Operator。
访问 S3 对象中的名称
Daniel 的 post 包含 R 对象的代码,open.account()
。正如指定的那样,此对象基于 S3 对象系统,其中对象的行为定义为 list()
中的项目。
代码在 list()
、deposit
、withdraw
和 balance
中创建了三个函数。由于每个函数都分配了一个名称,因此 open.account()
中的函数可以与 names()
函数一起列出,如下所示。
> names(open.account())
[1] "deposit" "withdraw" "balance"
>
通过学习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)
我对这段代码最感兴趣的是什么,学习 "$"
美元符号的使用,它指的是 open.account()
函数中的特定 internal function
。我是说这部分:
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- 是否有任何参考资料可供我阅读更多相关信息?
谢谢!
$
允许您按名称从命名列表中提取元素。例如
x <- list(a=1, b=2, c=3)
x$b
# [1] 2
您可以使用 names()
names(x)
# [1] "a" "b" "c"
这是一个基本的提取运算符。在R中输入?Extract
即可查看对应的帮助页面。
R中提取运算符有四种形式:[
、[[
、$
和@
。第四种形式也称为插槽运算符,用于从使用 S4 对象系统构建的对象中提取内容,也称为 R 中的正式定义对象。大多数 R 初学者不要使用正式定义的对象,所以我们不会在这里讨论槽运算符。
第一种形式,[
,可用于从向量、列表或数据框中提取内容。
第二种和第三种形式,[[
和$
,从单个对象中提取内容。
$
运算符使用名称来执行提取,如 anObject$aName
中一样。因此,它使人们能够根据名称从列表中提取项目。由于 data.frame()
也是 list()
,它特别适合访问数据框中的列。也就是说,这种形式不适用于计算索引或函数中的变量替换。
同样,可以使用[
或[[
形式从对象中提取命名项,例如anObject["namedItem"]
或anObject[["namedItem"]]
。
有关使用运算符的每种形式的更多详细信息和示例,请阅读我的文章 Forms of the Extract Operator。
访问 S3 对象中的名称
Daniel 的 post 包含 R 对象的代码,open.account()
。正如指定的那样,此对象基于 S3 对象系统,其中对象的行为定义为 list()
中的项目。
代码在 list()
、deposit
、withdraw
和 balance
中创建了三个函数。由于每个函数都分配了一个名称,因此 open.account()
中的函数可以与 names()
函数一起列出,如下所示。
> names(open.account())
[1] "deposit" "withdraw" "balance"
>