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

在R中使用数据框不同alpha/beta值调用rbeta函数的问题

问题分析与解决

你的代码出错的核心原因是:在sapply的匿名函数中,你直接传入了整个df$alpha和df$beta列向量,而非每次循环取当前行对应的单个alpha、beta值。R的向量循环机制会让rbeta重复使用这两个向量的所有元素,而非按行匹配参数。

修正方法一:在sapply中按索引取行参数

修改匿名函数,用循环变量x索引df的对应行,获取该行的alpha和beta值:

I=10
rb <- sapply(1:3, function(x) rbeta(I, df$alpha[x], df$beta[x]))

执行后rb会是一个10行3列的矩阵,每列对应df中一行参数生成的10个beta分布样本(比如第一列就是rbeta(10,27,104)的结果)。

修正方法二:用apply按行处理(更直观)

如果想直接对df的每行进行操作,用apply按行遍历会更清晰,最后转置调整矩阵维度:

I=10
rb <- t(apply(df, 1, function(row) rbeta(I, row["alpha"], row["beta"])))

这里apply(df,1,...)会遍历df的每一行,每行生成10个样本,t()转置后得到3行10列的矩阵,每行对应一组参数的样本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:17:22