Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用'时出错';沃德'';使用pvclustr包的方法_R_Cluster Analysis_Hierarchical Clustering_Pvclust - Fatal编程技术网

使用'时出错';沃德'';使用pvclustr包的方法

使用'时出错';沃德'';使用pvclustr包的方法,r,cluster-analysis,hierarchical-clustering,pvclust,R,Cluster Analysis,Hierarchical Clustering,Pvclust,我在使用pvclust包进行聚类分析时遇到了一些问题 具体来说,我有一个由物种(行)和采样站(列)组成的数据矩阵。我想执行一个CA,以便根据我的物种丰度(我之前记录(x+1)转换)对我的采样站进行分组 在充分准备好矩阵之后,我尝试根据pvclust包运行CA,使用Ward的聚类方法和Bray Curtis作为距离索引。但是,每次我收到以下错误消息时: ''hclust中的错误(距离,方法=方法.hclust): 无效的群集方法“” 然后,我尝试使用另一种聚类方法执行相同的分析,结果没有问题。我还

我在使用pvclust包进行聚类分析时遇到了一些问题

具体来说,我有一个由物种(行)和采样站(列)组成的数据矩阵。我想执行一个CA,以便根据我的物种丰度(我之前记录(x+1)转换)对我的采样站进行分组

在充分准备好矩阵之后,我尝试根据pvclust包运行CA,使用Ward的聚类方法和Bray Curtis作为距离索引。但是,每次我收到以下错误消息时:

''hclust中的错误(距离,方法=方法.hclust): 无效的群集方法“”

然后,我尝试使用另一种聚类方法执行相同的分析,结果没有问题。我还尝试使用纯素软件包中的hclust函数执行相同的分析,我也没有任何问题。分析运行时没有任何问题

为了更好地理解我的问题,我将显示部分矩阵和 我用于执行分析的脚本:

          P1        P2         P3         P4         P5       P6
1  10.8750000 3.2888889  2.0769231  1.4166667  3.2395833 5.333333
3   0.3645833 0.3027778  0.3212038  0.7671958  0.4993676 0.000000
4   0.0000000 0.0000000  2.3500000  0.0000000  0.0000000 0.264000
5   0.0000000 0.7333333  0.2692308  0.0000000  0.2343750 0.000000
6   0.0000000 0.9277778  0.0000000  0.2936508  0.7291667 0.000000
7   0.4166667 6.3500000  1.0925463  0.5476190  0.1885169 0.000000
8   1.6250000 0.0000000  0.0000000  0.0000000  5.2187500 0.000000
9   0.0000000 0.8111111  0.0000000  0.0000000  0.0000000 0.000000
10  2.6770833 0.6666667  2.3304890  4.5906085  2.9652778 0.000000
15  1.8020833 0.9666667  1.4807137  3.3878968  0.1666667 0.000000
16 17.8750000 4.9555556  1.4615385  6.5000000  7.8593750 7.666667
19  4.5312500 1.0555556  3.5766941  6.7248677  2.3196181 0.000000
20  0.0000000 0.6777778  0.5384615  0.0000000  0.0000000 0.000000
21  0.0000000 0.9777778  0.0000000  0.2500000  0.0000000 0.000000
24  1.2500000 3.0583333  0.1923077  0.0000000  4.9583333 0.000000
25  0.0000000 0.0000000  2.5699634  0.0000000  0.0000000 0.000000
26  6.6666667 2.2333333 24.8730020 55.9980159 17.6239583 0.000000
其中P1-P6是我的采样站,最左边的行号是我的不同物种。我将这个示例矩阵表示为“平台”

之后,我使用了以下代码行:

dist <- function(x, ...){
  vegdist(x, ...)
}

result<-pvclust(platforms,method.dist = "bray",method.hclust = "ward")

dist有两个相关问题:

  • 调用
    method.hclust
    时,需要传递与hclust兼容的方法。理论上,
    pvclust
    检查
    ward
    并转换为
    ward.D
    ,但您可能希望传递
    ward.D
    ward.D2
    的(正确)名称
  • 你不能用那种方式写得太多。但是,您可以将自定义函数传递给
    pvclust
  • 例如,这应该是可行的:

    library(vegan)
    library(pvclust)
    
    sample.data <- "P1  P2  P3  P4  P5  P6
    10.8750000  3.2888889   2.0769231   1.4166667   3.2395833   5.3333330
    0.3645833   0.3027778   0.3212038   0.7671958   0.4993676   0.0000000
    0.0000000   0.0000000   2.3500000   0.0000000   0.0000000   0.2640000
    0.0000000   0.7333333   0.2692308   0.0000000   0.2343750   0.0000000
    0.0000000   0.9277778   0.0000000   0.2936508   0.7291667   0.0000000
    0.4166667   6.3500000   1.0925463   0.5476190   0.1885169   0.0000000
    1.6250000   0.0000000   0.0000000   0.0000000   5.2187500   0.0000000
    0.0000000   0.8111111   0.0000000   0.0000000   0.0000000   0.0000000
    2.6770833   0.6666667   2.3304890   4.5906085   2.9652778   0.0000000
    1.8020833   0.9666667   1.4807137   3.3878968   0.1666667   0.0000000
    17.8750000  4.9555556   1.4615385   6.5000000   7.8593750   7.6666670
    4.5312500   1.0555556   3.5766941   6.7248677   2.3196181   0.0000000
    0.0000000   0.6777778   0.5384615   0.0000000   0.0000000   0.0000000
    0.0000000   0.9777778   0.0000000   0.2500000   0.0000000   0.0000000
    1.2500000   3.0583333   0.1923077   0.0000000   4.9583333   0.0000000
    0.0000000   0.0000000   2.5699634   0.0000000   0.0000000   0.0000000
    6.6666667   2.2333333   24.8730020  55.9980159  17.6239583  0.0000000"
    
    platforms <- read.table(text = sample.data, header = TRUE)
    
    result <- pvclust(platforms, 
                      method.dist = function(x){
                        vegdist(x, "bray")
                      },
                      method.hclust = "ward.D")
    
    library(素食主义者)
    图书馆(pvclust)
    
    sample.data有两个相关问题:

  • 调用
    method.hclust
    时,需要传递与hclust兼容的方法。理论上,
    pvclust
    检查
    ward
    并转换为
    ward.D
    ,但您可能希望传递
    ward.D
    ward.D2
    的(正确)名称
  • 你不能用那种方式写得太多。但是,您可以将自定义函数传递给
    pvclust
  • 例如,这应该是可行的:

    library(vegan)
    library(pvclust)
    
    sample.data <- "P1  P2  P3  P4  P5  P6
    10.8750000  3.2888889   2.0769231   1.4166667   3.2395833   5.3333330
    0.3645833   0.3027778   0.3212038   0.7671958   0.4993676   0.0000000
    0.0000000   0.0000000   2.3500000   0.0000000   0.0000000   0.2640000
    0.0000000   0.7333333   0.2692308   0.0000000   0.2343750   0.0000000
    0.0000000   0.9277778   0.0000000   0.2936508   0.7291667   0.0000000
    0.4166667   6.3500000   1.0925463   0.5476190   0.1885169   0.0000000
    1.6250000   0.0000000   0.0000000   0.0000000   5.2187500   0.0000000
    0.0000000   0.8111111   0.0000000   0.0000000   0.0000000   0.0000000
    2.6770833   0.6666667   2.3304890   4.5906085   2.9652778   0.0000000
    1.8020833   0.9666667   1.4807137   3.3878968   0.1666667   0.0000000
    17.8750000  4.9555556   1.4615385   6.5000000   7.8593750   7.6666670
    4.5312500   1.0555556   3.5766941   6.7248677   2.3196181   0.0000000
    0.0000000   0.6777778   0.5384615   0.0000000   0.0000000   0.0000000
    0.0000000   0.9777778   0.0000000   0.2500000   0.0000000   0.0000000
    1.2500000   3.0583333   0.1923077   0.0000000   4.9583333   0.0000000
    0.0000000   0.0000000   2.5699634   0.0000000   0.0000000   0.0000000
    6.6666667   2.2333333   24.8730020  55.9980159  17.6239583  0.0000000"
    
    platforms <- read.table(text = sample.data, header = TRUE)
    
    result <- pvclust(platforms, 
                      method.dist = function(x){
                        vegdist(x, "bray")
                      },
                      method.hclust = "ward.D")
    
    library(素食主义者)
    图书馆(pvclust)
    
    请提供一个可复制的示例,包括代码和样本数据。现在,很难诊断-使用
    stats::hclust
    时,只需键入
    ward.D
    ward.D2
    即可,其中
    pvclust::pvclust
    需要
    ward
    。嗨,Michael,我已经更新了我的帖子,以便为我的问题提供一个实际的例子。注意沃德的方法是基于平方欧几里德的。因此,虽然你可以通过其他距离得到一个结果,但它可能不再受沃德最初理论的支持。请提供一个可复制的例子,包括代码和样本数据。现在,很难诊断-使用
    stats::hclust
    时,只需键入
    ward.D
    ward.D2
    即可,其中
    pvclust::pvclust
    需要
    ward
    。嗨,Michael,我已经更新了我的帖子,以便为我的问题提供一个实际的例子。注意沃德的方法是基于平方欧几里德的。因此,虽然你可能会在其他距离上得到一个结果,但它可能不再受到沃德最初理论的支持。嗨,迈克尔,谢谢你的快速回复。不幸的是,在运行代码行之后,我仍然收到一条错误消息。这一次,在运行代码行之后,我得到以下消息:as.character(x)中的错误:无法将类型“closure”强制为类型“character”的向量。知道现在发生了什么吗?我刚刚添加了示例数据-它与我提供的有效吗?我怀疑
    平台
    可能出了问题。它不起作用,同样的错误消息再次出现。我仔细检查了我的数据矩阵(实际上是一个数据帧),一切都正常。为了看看我有什么,这里是我的数据矩阵结构的第一行:“data.frame”:17 obs。共13个变量:$P1:num 10.875 0.365 0 0…$P2:num 3.289 0.303 0.733 0.928…$P3:num 2.077 0.321 0.269 0…$P4:num 1.4170.7670.294…@Marie ChristineRufener试试看now@Marie-ChristineRufener michael的例子对我来说非常好,尝试一个干净的r会话,或者你正在做一些与usHi michael不同的事情,谢谢你的快速回复。不幸的是,在运行代码行之后,我仍然收到一条错误消息。这一次,在运行代码行之后,我得到以下消息:as.character(x)中的错误:无法将类型“closure”强制为类型“character”的向量。知道现在发生了什么吗?我刚刚添加了示例数据-它与我提供的有效吗?我怀疑
    平台
    可能出了问题。它不起作用,同样的错误消息再次出现。我仔细检查了我的数据矩阵(实际上是一个数据帧),一切都正常。为了看看我有什么,这里是我的数据矩阵结构的第一行:“data.frame”:17 obs。共13个变量:$P1:num 10.875 0.365 0 0…$P2:num 3.289 0.303 0.733 0.928…$P3:num 2.077 0.321 0.269 0…$P4:num 1.4170.7670.294…@Marie ChristineRufener试试看now@Marie-ChristineRufener michael的例子对我来说非常好,尝试一个干净的r课程,或者你正在做一些与我们不同的事情