我确信这有一个非常基本的答案,这可能就是为什么我发现很难真正地寻找和找到一个答案。但是..。请有人解释一下,在R中用相同的语法组合$和()意味着什么?
例如,从这一小插曲:
https://cran.r-project.org/web/packages/pivottabler/vignettes/v00-vignettes.html
library(pivottabler)
pt <- PivotTable$new()
pt$addData(bhmtrains)
pt$renderPivot()直到几年后,我才在学习R的时候遇到过这种情况。我最近看到的越来越多,但这不是我的直觉吗?
$通常用于访问R类数据帧(例如dataframe$column1 )列中对象的子结构,而()通常用于封装命名函数e.g rnorm(10,0,1)的所有参数。
当它们一起使用时,这是什么意思?例如x$y(z)
发布于 2022-09-11 19:15:22
美元是一个通用运算符,用于提取或替换部分递归对象,如列表和数据帧。
列表是一个对象,包括一个有序的对象集合(包括其他列表),可能是不同类型的对象,上述组件。
考虑以下清单:
L <- list(a = 1, f = function() message("hello"))这是一个包含两个组件的列表:a和f。第一个是数字,第二个是函数。通过应用$-operator,可以提取组件的值,该值也可以重新分配:
L$a
# 1
L$a <- 2
L$a
# 2对于f组件,因为它是一个函数,所以您可以得到它的主体:
L$f
# function() message("hello")这与每个函数标识符一致:它的值是函数的主体。毫不奇怪,将括号应用于函数的标识符后,可以执行该函数,即:
L$f()
# hello这为非常强大的结构打开了大门,在那里您可以存储数据和操作它们的函数。
这种逻辑类似于OOP世界中使用的类。当然,您需要更多的特性,例如实例化、继承。例如,这些机制是由您在标记中提到的R6包提供的。
library(R6)
A <- R6Class("A", list(f=function() message("hello") ))
a <- A$new()
a$f()
# helloA是一个R6类,因此A$new()通过类函数new创建类的新实例a。如您所见,这个函数是使用类似于上面的L$f()的语法(和逻辑)调用的。实例a继承类函数f,此处所述方法,a$f()执行它。
https://stackoverflow.com/questions/70711537
复制相似问题