R函数()中美元符号“$”的含义是什么?
通过学习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
,但它是没有用的,我想找到一种方法来提取的,可以通过“$”不只是指通过调用和查询内部函数的名称(S)书面代码为> 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
来查看相应的帮助页面。
您通常需要选择整个列,即数据框中的一个特定变量。如果你想选择可变直径的所有元素,例如,这两个会做的伎俩: dataframe_name [,colomn_position] dataframe_name [“colomn_name”]
然而,有一个短切。如果您的列都有名称,你可以使用$符号:
dataframe_name $ colomn_name
有四种形式R中的提取操作的:[
,[[
,$
和@
。第四种形式也称为槽操作符,用于从S4对象系统构建的对象中提取内容,也称为,在R中正式定义的对象。大多数开始的R用户不能使用正式定义的对象,所以我们不会在这里讨论slot操作符。
第一种形式[
可用于从矢量,列表或数据框中提取内容。
第二种和第三种形式,[[
和$
,从单个对象中提取内容。
$
运算符使用一个名称来执行提取,如anObject$aName
。因此它使人能够根据名称从列表中提取项目。由于data.frame()
也是list()
,它特别适合访问数据框中的列。也就是说,这种形式不适用于计算索引或函数中的变量替换。
同样,可以使用[
或[[
表单从对象中提取指定项目,例如anObject["namedItem"]
或anObject[["namedItem"]]
。请参阅我的文章Forms of the Extract Operator。
请参阅帮助文件:'?“$”'。 – lmo