1. 如何对数组去重?
    使用 duplicated 函数是一个可以用来解决向量或者数据框重复值的函数,它会返回一个TRUE和FALSE的向量,以标注该索引所对应的值是否是前面数据所重复的值。
    需要注意的是不重复对应返回的值是FALSE,所以在后面我们用!来取反以得到不重复的值。

    1
    2
    arr <- c(1,2,3,5,3,2,4,1,5)
    arr[!duplicated(arr)]

    输出为:
    [1] 1 2 3 5 4

  2. 如何取得数组的极大值(或极小值)
    使用 diffsign 两个函数。其中diff 得到相邻数的差, sign 则取符号位(-1,0,1),因每次 diff 返回的数组比原数组的长度小于1,我们主动在首位添加1,表示最小值,即不论原来首位是什么数,都比新添加的数大,在尾部添加-1表示最大值。
    所谓极大值,即该值比相邻两边的值都大 ,第一次diff要比左边的值大,比右边的值小,所以diff后的值应该是1,-1(没有考虑相等的情况);那第二次diff的值应该是-1-1=-2.
    代码如下:

    1
    2
    3
     findMaxima <- function(array){
    which(diff(c(1,sign(diff(array)),-1)) == -2)
    }

    返回的是index

    1
    2
    arr <- c(1,2,3,5,3,2,4,1,5)
    findMaxima(arr)

    运行结果为:
    [1] 4 7 9

  3. 如何获得当前文件所在的目录

    1
    curFileDir <- dirname(sys.frame(1)$ofile)

    需要注意的是这行代码在命令行运行会出错,只能在文件里面执行。

    更多

Hierarchical Clustering

hclust

  • hclust
  • cutree
    函数原型:cutree(tree, k = NULL, h = NULL)
    其中k是聚类个数,h是数值类型。h是生成的树的高度的一个cut点。h和k的对应关系如下:

    1
    k <- nrow(tree$merge) + 2L - apply(outer(c(tree$height, Inf), h, ">"),2, which.max)

    等价于:

    1
    k <- nrow(treec$merge) + 2L - which.max(c(tree$height, Inf)>hy)

Partitioning Clustering

更多