'names<-'和'class<-'在下面的 R 代码中做什么?

  • 本文关键字:代码 在下面 names class r
  • 更新时间 :
  • 英文 :


我在一本书中阅读了以下代码。不太确定"名称<-"最后一行的部分。

有人能提供一些参考吗?这是否与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")
}
  1. ‘class<-‘(带有单引号,无论是花哨的还是直接的ascii'(是错误的,可能是复制粘贴和/或误解他人代码的副作用。(MS Word经常这样做……永远不要在Word中编写/编辑R代码,R不能容忍这些花哨的细节:-(。

    通常,它应该是backticks,如`class<-``names<-`

  2. 通常,人们会看到类似的东西

    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<-`,它正在改变对象"的类;内联";。

相关内容

最新更新