【发布时间】:2019-06-06 09:48:46
【问题描述】:
大家好,
我正在努力创建一个列,该列将使用随机值生成值函数填充值,该值函数将另一列的值作为参数。
有点上下文 - 我有一个列中包含提前期的数据表:
library(data.table)
dt <- data.table(Item = rep(123456,each = 1000), LT = rnorm(1000,mean = 10, sd = 3))
还有一个功能:
rand_ddlt_norm <- function(Lt,mean,sd){
sign(Lt) * ( sum( rnorm( floor(abs(Lt)), mean, sd) ) +
rnorm(1, mean, sd) * ( abs(Lt)%%1) )
}
上述函数旨在计算每行在提前期期间的需求。
很遗憾,我不能这样做:
dt[,ddlt := rand_ddlt_norm(LT, mean = 100, sd = 30)]
因为所有行都将填充相同的数字。
我显然可以将它放入一个循环中,但是对于 10,000 次迭代、20,000 多个产品和众多分布类型,计算时间变得越来越荒谬。
我非常欢迎有关如何在不运行循环的情况下优化此代码的任何建议。
【问题讨论】:
-
您创建的函数请求变量
LT、est11和est12。但是,当您尝试创建数据表时,您需要提供LT、mean和sd。你的意思是在那儿也使用LT、est11和est12吗? -
拍得很好,谢谢,我的大脑已经不能工作了。这将教会我重新输入代码而不是粘贴
标签: r random data.table