首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中,在纯素函数simper()中,为什么我会收到一条错误消息,说明"...length of 'dimnames‘[1]不等于数组范围“

在R中,在纯素函数simper()中,为什么我会收到一条错误消息,说明"...length of 'dimnames‘[1]不等于数组范围“
EN

Stack Overflow用户
提问于 2022-10-18 21:12:45
回答 1查看 54关注 0票数 0

我试图将dune数据集和dune.env数据集的一列传递给函数vegan::simper(),但始终显示错误消息。即使我运行直接从simper()帮助面板复制的代码,也会显示此错误消息,该帮助面板与下面所示的代码有所不同。

代码语言:javascript
复制
> library(vegan)
> data("dune"); data("dune.env")
> simper(dune,dune.env$Moisture)
Error in array(r, dim = d, dimnames = if (!(is.null(n1 <- names(x[[1L]])) &  : 
  length of 'dimnames' [1] not equal to array extent

我尝试将dune.env$Moisture转换为data.frame,以便更好地匹配其他纯素函数(如cca() )的输入要求,但继续接收相同的错误。

代码语言:javascript
复制
> (dune_moisture <- data.frame("dune_moisture" = dune.env$Moisture))
   dune_moisture
1              1
2              1
3              2
4              2
5              1
6              1
7              1
8              5
9              4
10             2
11             1
12             4
13             5
14             5
15             5
16             5
17             2
18             1
19             5
20             5
> simper(dune,dune_moisture)
Error in array(r, dim = d, dimnames = if (!(is.null(n1 <- names(x[[1L]])) &  : 
  length of 'dimnames' [1] not equal to array extent

如何将数据传递给vegan::simper()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-19 15:50:32

类似的问题已经有报道,并在最近的纯素的CRAN版本(2.6-4)中得到修正。当代理包与纯素同时加载时,问题就出现了。proxy改变了标准R距离结构的处理方式,这会干扰simper内部的距离处理。这在https://github.com/vegandevs/vegan/issues/528中进行了讨论,并在最新的纯素版本(2.6-4)中得到了修正。如果您无法获得最新的纯素版本,请卸载代理,这样就可以了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74117527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档