我在一本书中阅读了以下代码。不太确定"名称<-"最后一行的部分。
有人能提供一些参考吗?这是否与https://adv-r.hadley.nz/functions.html?或者他们以某种方式定义了属性?谢谢
bs.quantile <- function(v, p=c(0, 0.25, 0.5, 0.75, 1))
{
b <- 1-p
k <- floor((ps <- p*length(v))+b)
beta <- ps+b-k
'names<-'((1-beta)*(v <- sort(v))[k]+beta*(ifelse(k<length(v), v[k+1], v[k])), p)
}
作者在其他几个地方也使用了这种方法。
‘class<-‘(tree, "dectree.frac")
‘class<-‘(list(prior=cc/sum(cc),cond=sapply(avc,
function(avc1) t(apply(avc1, 1, "/", colSums(avc1))))),"nbc")
}
-
‘class<-‘
(带有单引号,无论是花哨的‘
还是直接的ascii'
(是错误的,可能是复制粘贴和/或误解他人代码的副作用。(MS Word经常这样做……永远不要在Word中编写/编辑R代码,R不能容忍这些花哨的细节:-(。通常,它应该是backticks,如
`class<-`
和`names<-`
。 -
通常,人们会看到类似的东西
vec <- c(1, 3, 11) names(vec) <- c("a", "BB", "quux") vec # a BB quux # 1 3 11
最后一个调用实际上是调用一种特殊形式的函数调用
`names<-`
(而不是names
本身(,它告诉R,当在赋值运算符(R中的=
或<-
(的左侧(LHS(调用names(...)
时,它应该做一些不同的事情。有时,程序员试图通过直接调用函数来保持灵活性(代码高尔夫球(,这样他们就可以在不必更改原始变量值的情况下获得返回值。例如:
vec <- c(1, 3, 11) `names<-`(vec, c("a", "BB", "quux")) # a BB quux # 1 3 11 vec # [1] 1 3 11
使用
`class<-`
,它正在改变对象"的类;内联";。