r - 测量功能分散 - 'd' 和 'a' 中的物种标签需要相同并按字母顺序(或仅按相同顺序)
问题描述
我正在使用某人的代码来计算英国各地鸟类物种的功能分散
使用 FD 包
fd_mi <- fdisp(gd_mi, ts_mi$eco_mi)
以上是我正在使用的代码行
这是我收到的错误消息:“'d' 和 'a' 中的物种标签需要相同并按字母顺序排序(或仅按相同顺序)”。
我想这意味着我加入的两个数据集中的物种名称不匹配,但是我已经在 excel 中检查了这一点,看起来确实如此。任何人都可以帮忙吗?
解决方案
这是该函数希望您的数据看起来像的样子:
> dummy.dist
sp1 sp2 sp3 sp4 sp5 sp6 sp7
sp2 0.2181884
sp3 0.5240052 0.6678082
sp4 0.6737443 0.5610028 0.8225701
sp5 0.5291113 0.8145699 0.4862253 0.4843264
sp6 0.6100161 0.5932587 0.2784736 0.7073925 0.6067323
sp7 0.4484235 0.6863374 0.4848663 0.5575126 0.3023416 0.6187844
sp8 0.4072834 0.2039443 0.5958904 0.2390962 0.5585525 0.4470207 0.7030186
> dummy$abun
sp1 sp2 sp3 sp4 sp5 sp6 sp7 sp8
com1 1 1 0 0 4 2 0 0
com2 0 0 0 2 1 0 0 5
com3 2 0 0 0 0 1 0 3
com4 1 0 7 0 0 0 0 0
com5 0 0 2 3 3 0 0 0
com6 0 3 0 0 5 6 1 6
com7 3 5 0 3 0 0 0 0
com8 0 0 0 0 6 2 1 2
com9 4 1 1 3 0 0 2 0
com10 0 4 1 0 0 0 6 1
# If we rearrange the columns in the abundance matrix...
shuffled <- dummy$abun[, sample(1:ncol(dummy$abun))]
> shuffled
sp4 sp8 sp3 sp2 sp1 sp6 sp5 sp7
com1 0 0 0 1 1 2 4 0
com2 2 5 0 0 0 0 1 0
com3 0 3 0 0 2 1 0 0
com4 0 0 7 0 1 0 0 0
com5 3 0 2 0 0 0 3 0
com6 0 6 0 3 0 6 5 1
com7 3 0 0 5 3 0 0 0
com8 0 2 0 0 0 2 6 1
com9 3 0 1 1 4 0 0 2
com10 0 1 1 4 0 0 0 6
#...and run the function...
ex1 <- fdisp(dummy.dist, shuffled)
# ...we get this error:
# Species labels in 'd' and 'a' need to be identical and ordered alphabetically
# (or simply in the same order).
# Assuming the number and names of species are the same,
# we can put them in the same order as the dist matrix:
shuffled[, attr(dummy.dist, 'Labels')]
# So if your issue is just the order, you might be able to solve it with:
fd_mi <- fdisp(gd_mi, ts_mi$eco_mi[, attr(gd_mi, 'Labels')])
如果这没有帮助,您可以通过以下方法开始解决您的问题:
# These two things should be:
class(gd_mi) # should be 'dist'
class(ts_mi$eco_mi) # should be 'matrix'
# These two numbers should be the same:
attr(gd_mi, 'Size')
ncol(ts_mi$eco_mi)
# If they're not the same, this might show you which species names in gd_mi are not in ts_mi$eco_mi:
setdiff(attr(gd_mi, 'Labels'), colnames(ts_mi$eco_mi))
# If that still doesn't point to the issue, show us the output from:
str(gd_mi)
str(ts_mi$eco_mi)
免责声明:我对这个包没有任何经验FD
,但我总是在这里帮助生物学家。
推荐阅读
- javascript - 流式传输网络摄像头/音频并将其保存为服务器上的文件 - Apache
- javascript - 允许模块访问需要它们的服务器中定义的函数/变量?
- python - Django-simple-history 错误设置 ChangeReason
- c# - epplus 获取列标题
- laravel - Azure 应用服务存在于子目录中时,如何设置其默认文档?
- javascript - 使用 If 语句代替单元测试
- swift4 - 在 google 地方 ios sdk 中显示的自定义地方
- javascript - 电子js上的地理定位
- wordpress - 如何从本地系统渲染和存储 WP 数据
- c++ - 检查 QDragEnterEvent 和 QDropEvent 中的 QMimeData