You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何逐次调整sites参数重复运行betapart包的beta.sample函数

逐次递增sites参数调用beta.sample的lapply实现方案

实现逻辑

你可以通过lapply遍历自定义的sites取值序列,将每次遍历的位点数值传入beta.sample的sites参数即可完成批量计算。由于多位点beta多样性至少需要2个站点,因此取值序列默认从2开始,你可以根据自己的需求调整起始值、终止值和步长。

完整示例代码

# 加载依赖包
library(betapart)

# -------------- 1. 准备你的物种矩阵 --------------
# 示例:生成1000个站点、50个物种的有无矩阵,替换为你自己的x即可
x <- data.frame(matrix(rbinom(1000*50, 1, 0.3), nrow = 1000, ncol = 50))

# -------------- 2. 定义sites遍历序列 --------------
# 逐次递增1的情况:从2到总站点数,步长为1
site_seq <- seq(from = 2, to = nrow(x), by = 1)
# 若站点数过多可调整步长减少运行量,比如步长设为10:seq(2, nrow(x), by=10)

# -------------- 3. lapply批量计算 --------------
beta_res_list <- lapply(site_seq, function(cur_site) {
  # 传入当前位点数量调用函数
  run_res <- beta.sample(
    x = x,
    index.family = "Sorensen",
    sites = cur_site,
    samples = 10 # 重复次数可自行调整
  )
  # 整理结果为数据框,保留当前位点数量
  data.frame(
    site_num = cur_site,
    total_beta = run_res$beta.SOR,
    turnover = run_res$beta.SIM,
    nestedness = run_res$beta.SNE
  )
})

# -------------- 4. 合并结果为统一数据框 --------------
beta_res_df <- do.call(rbind, beta_res_list)

补充说明

  • 如果你使用Jaccard指数族,将index.family参数改为"jaccard"即可,对应结果的取值为run_res$beta.JAC、run_res$beta.JTU、run_res$beta.JNE
  • samples参数越大结果越稳定,但运行时间也会越长,可根据你的算力情况调整
  • 最终输出的beta_res_df中每一行对应一个位点数量的计算结果,可直接用于后续分析或可视化

内容的提问来源于stack exchange,提问作者Ricardo Soto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:27:03