我正在重新运行大约 6 个月前编写的 RLQ 和第四角分析。然而,分析 Q 表时会弹出错误。我一直在关注 Stephane Dray 的 (2013) 教程并使用
dudi.pca 用于环境表(R,6 个站点的 6 个“数字”变量),
dudi.coa 用于物种存在表(L,6 个站点的 15 个物种(“整数”数据)),以及
dudi.hillsmith 的性状表(Q,15 个物种的 7 个混合性状(5 个“字符”和 2 个“数字”))。
dudi.pca(R)、dudi.coa(L) 都运行良好,但是当我尝试时:
> q_feeding <- dudi.hillsmith(traits_feeding, row.w=l_feeding$cw, scannf=F, nf=2)
我明白了
Error in x * w : non-numeric argument to binary operator
为了简化我们的讨论,“进食”=“存在”,对于是否观察到该物种在某个地点进食,其值为 0/1。当 L 是丰度数据时,不同的数据也会出现此错误。我尝试将分类特征更改为 TRUE/FALSE,看看“逻辑”是否有效。我很困惑,希望我错过了一些简单的事情。
“row.w=l_feeding$cw”返回一个数字向量,它告诉我 dudi.coa 正在工作,所以我猜测我的错误位于“traits_feeding”表中:
> traits_feeding
by fe dus fnt mo se ete
c.notat 0.450 0.673 Y N N N N
c.riat 0.423 0.667 Y N N Y N
z.op 0.501 0.556 N Y N N N
s.liat 0.335 0.596 N Y Y N N
s.i 0.382 0.549 N Y N N N
n.turat 0.354 0.648 N Y Y N N
c.eeke 0.297 0.348 Y Y N Y Y
c.rdid 0.306 0.688 Y Y N Y Y
s.tipinn 0.320 0.658 Y Y N Y N
s.amele 0.302 0.695 Y Y N Y N
s.midiat 0.285 0.678 Y Y N Y N
s.obb 0.294 0.666 Y Y N Y N
s.r 0.338 0.658 Y Y N Y N
s.vulat 0.315 0.684 Y Y N Y N
s.hlege 0.302 0.670 Y Y N Y N
> class(traits_feeding$by)
[1] "numeric"
> class(traits_feeding$fe)
[1] "numeric"
> class(traits_feeding$dus)
[1] "character"
> class(traits_feeding$fnt)
[1] "character"
> class(traits_feeding$mo)
[1] "character"
> class(traits_feeding$se)
[1] "character"
> class(traits_feeding$ete)
[1] "character"
我在 RStudio 1.2.5042 上运行 R 4.0.0,并运行最新版(2020 年 5 月 16 日)的 ade4。
有人可以帮我解决这个问题吗?最令人困惑的部分是,六个月前它运行没有错误,我相信和这里一样......
谢谢你, 瑞安
最佳答案
我知道这是一个相当晚的回复,但这对我有用:
dudi.hillsmith
找不到衡量字符变量的方法。
我将这些更改为具有级别的因素,效果非常好。
希望这可以帮助其他遇到同样问题的人!
关于r - dudi.hillsmith x * w : non-numeric argument to binary operator 中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61841980/