我只是在读《坚果中的R》这本书。好像我跳过了“。”部分。如“ sample.formula”中所述。
> sample.formula <- as.formula(y~x1+x2)
是否像其他语言一样使用字段公式对对象进行采样?如果是这样,我如何找出该对象还有哪些其他字段/功能?(类型声明)
编辑:我刚刚发现另一个令人困惑的使用“。”:
> svm(formula = is_spam~., data = spambase.training)
(〜。之间的点)
我只是在读《坚果中的R》这本书。好像我跳过了“。”部分。如“ sample.formula”中所述。
> sample.formula <- as.formula(y~x1+x2)
是否像其他语言一样使用字段公式对对象进行采样?如果是这样,我如何找出该对象还有哪些其他字段/功能?(类型声明)
编辑:我刚刚发现另一个令人困惑的使用“。”:
> svm(formula = is_spam~., data = spambase.training)
(〜。之间的点)
Answers:
该点可以用作常规名称。但是,它还有其他特殊解释。假设我们有一个具有特定类的对象:
a <- list(b=1)
class(a) <- "myclass"
现在myfunction
通过以下方式声明为标准泛型:
myfunction <- function(x,...) UseMethod("myfunction")
现在声明函数
myfunction.myclass <- function(x,...) x$b+1
那么该点具有特殊含义。对于所有带有类myclass
调用的对象
myfunction(a)
实际上会调用函数myfunction.myclass
:
> myfunction(a)
[1] 2
这在R中广泛使用,最合适的例子是函数summary
。每个类都有其自己的summary
功能,因此,例如,当您适合某个模型(通常返回带有特定类的对象)时,您需要调用summary
并将为该特定模型调用适当的摘要函数。
...
(是单个词素,不是三个不同的词素的序列)称为“点”,而问题显然是指公式和名称中所用的点 .
以完全不同的方式表达,正如在同期正确地描述的那样。蔡斯回答。
有一些例外(S3方法分派),但通常将其仅用作易读性,因此没有特殊含义。
.
。这与功能名称有关。至于(非功能)对象的名称,那么是的,没有特殊含义。
.
使对象看不见ls()
。
sample.formula中的点不会从视觉上分离样品和公式。它只是一个变量名。R变量名称可以由字母数字,点(。)和下划线(_)组成,但有一个例外。这是实际规则:
“ 语法上有效的名称由字母,数字和点或下划线字符组成,并且以字母或点开头,后跟数字。例如“ .2way”的名称无效,保留字也不是。 ”
第二种情况(即is_spam_。的情况)不同,已在上面进行了说明。