小编Gre*_*ent的帖子

data.table 样本,概率存储在列中

我有一个数据表,其中存储在列中的离散分布的概率。

例如,dt <- data.table(p1 = c(0.5, 0.25, 0.1), p2 = c(0.25, 0.5, 0.1), p3 = c(0.25, 0.25, 0.8))

我想创建一个新的随机变量列,使用同一行中的概率进行采样。在 data.table 语法中,我想象它的工作方式如下:

dt[, sample := sample(1:3, 1, prob = c(p1, p2, p3))]
Run Code Online (Sandbox Code Playgroud)

如果有一个类似于“pmin”和“pmax”的“psample”函数,那么这将起作用。我能够使用 apply 来完成这项工作,缺点是对于我的真实数据集,这需要比我想要的更长的时间。有没有办法使用 data.table 来完成这项工作?下面给出应用解决方案。

dt[, sample := apply(dt, 1, function(x) sample(1:3, 1, prob = x[c('p1', 'p2', 'p3')]))]
Run Code Online (Sandbox Code Playgroud)

random r function data.table rowwise

5
推荐指数
1
解决办法
528
查看次数

标签 统计

data.table ×1

function ×1

r ×1

random ×1

rowwise ×1