想发好文章

综合讨论 2098 0
一区,二区top
一区,二区top 2 来自中国 发表于:2023-08-10 22:51:36

am怎么发啊


本帖完毕
回帖
  • 等待你,消灭零评论
科研通是完全免费的文献互助平台,具备全网最快的应助速度,最高的求助完成率。 对每一个文献求助,科研通都将尽心尽力,给求助人一个满意的交代。
实时播报
一一应助默默的紫槐采纳,获得10
刚刚
风中向薇发布了新的文献求助10
刚刚
mjtsurgery完成签到,获得积分10
2秒前
而当下的发布了新的文献求助10
2秒前
2秒前
坚定的棕发布了新的文献求助10
2秒前
2秒前
chenhouhan发布了新的文献求助10
3秒前
汉堡包应助严三笑采纳,获得10
3秒前
波塔西完成签到,获得积分10
3秒前
之昂发布了新的文献求助10
4秒前
5秒前
幸福C应助mxy126354采纳,获得10
6秒前
新星发布了新的文献求助10
7秒前
小白完成签到,获得积分10
7秒前
SciGPT应助碧赴采纳,获得10
7秒前
akjsi完成签到,获得积分10
7秒前
8秒前
OatX发布了新的文献求助80
8秒前
8秒前
FashionBoy应助潦草小狗采纳,获得10
8秒前
9秒前
9秒前
lsl应助chenhouhan采纳,获得20
9秒前
风清扬发布了新的文献求助10
9秒前
9秒前
9秒前
9秒前
simao完成签到,获得积分10
10秒前
10秒前
cxx发布了新的文献求助10
10秒前
10秒前
10秒前
11秒前
11秒前
11秒前
无极微光应助妮妮采纳,获得20
11秒前
11秒前
11秒前
12秒前
热门帖子
关注 科研通微信公众号,转发送积分 6479617
求助须知:如何正确求助?哪些是违规求助? 8280673
关于积分的说明 17662047
捐赠科研通 5562338
什么是DOI,文献DOI怎么找? 2911427
邀请新用户注册赠送积分活动 1888509
关于科研通互助平台的介绍 1742681
最新评论
这个错误通常发生在 R 语言进行并行计算时(尽管你设置了 `nworker = 1`,但 `iCAMP` 内部的 `icamp.big` 函数依然会调用底层集群或外部包进行特定的零模型随机化计算)。 导致 **`invalid 'size' argument`(无效的大小参数)** 的核心原因通常是:**由于某些 bin(物种组)内包含的物种数量(或样本量)太少,导致在进行随机抽样(如 `sample()` 函数)时,传入的抽样数量变为了 `0`、负数、或者是 `NA`。** 下面是导致该错误的两个最主要原因以及排查修复方法: --- ### 原因 1:某些 Bin 的物种数太少,且没有被正确忽略 看你的日志: > `----------Now binning com and sp without omitting small bins-----------------` 这意味着 `iCAMP` 正在对所有 bin 进行计算,**没有忽略那些极小的 bin**。虽然你设置了 `bin.size.limit = 20`,但在 `iCAMP` 的逻辑中,如果严格分 bin 导致某些“无法归类”或特殊的 bin 里面物种数少于某个抽样临界值,底层代码在计算观测 MPD 或随机化时就会因为 `sample(..., size = x)` 中的 `x < 1` 而崩溃。 #### 💡 解决方法: 尝试调整 `bin.size.limit` 或者增加系统发育树的过滤。你可以把 `bin.size.limit` 稍微调大(例如 24 或 30),或者检查你的群落数据 `comm` 中是否包含大量的低丰度/稀有物种(单件/双件物种),**建议在跑 iCAMP 之前,先过滤掉在极少数样本中**出现**的稀有物种**: ```R # 过滤掉在少于 3 个样本中**出现**的物种(根据你的数据自行调整) comm_filtered 0) >= 3] # 记得同步过滤 tree library(ape) tree_filtered `2: 'memory.limit()' is no longer supported` > `错误于checkForRemoteErrors(val)` 这说明你使用的是 **Windows 系统**,且 R 版本较新(R 4.2.0 之后已经废弃了 `memory.limit()`)。 虽然你显式设置了 `nworker = 1`,但 `iCAMP` 的某些子函数(例如底层调用 `parallel` 或 `snow` 包时)在 Windows 下创建单节点本地集群时,由于内存限制或变量传递失败,导致子节点传回了一个空值(`NULL` 或 `NA`),主节点在拿这个空值去作为 `size` 进行计算时引发了报错。 #### 💡 解决方法: 在运行 `icamp.big` 之前,手动在 R 中关闭所有潜在的并行冲突,并尝试清除内存: ```R # 1. 显式关闭可能残留的并行集群 try(parallel::stopCluster(cl), silent = TRUE) # 2. 深度清理 R 的内存垃圾 gc(full = TRUE) # 3. 重新运行,并将 nworker 设为 0 或 1 尝试 # 有些包的逻辑中,nworker = 0 才会完全不初始化并行环境,彻底走单线程 ``` --- ### 🛠️ 终极排查建议(两步走) 如果上述调整后依然在 `iCAMP` 的固定位置(如 `bin i=2` 之后)报错,说明是**输入数据的问题**。请重点检查你的输入数据: 1. **检查群落与树的匹配**:确保 `colnames(comm)` 和 `tree$tip.label` **完全一致**。虽然日志显示 `The names are re-ranked.`(名字已重新排序),但如果有物种名字在树里有、在群落里没有,或者反过来,容易导致分 bin 出现空集。 ```R # 严格确保二者物种完全对齐 sp.match 7分钟前
你只悬赏了10积分啊 43分钟前
谢谢!祝您科研顺利!顺心如意! 5小时前
感谢科研通,必须支持一下 5小时前
so good 6小时前
需要积分需要怎么做 6小时前
so good 6小时前
so good 7小时前