假设我有一个过程取决于两个输入和一个输出。该过程已经在其他地方进行了数值模拟,因此再次运行这些模拟是不切实际的。
我已将数据存储在表中。该表包含(其中包括)两个关键输入参数和结果输出参数(此处分别为v,q和quant)。
> v=0.01*rep(1:100, each=100)
> q=0.01*rep(seq(1:100),100)
> quant <- rnorm(10000, mean=0.5, sd=0.1)
> fd <- data.table(q,v, quant)
我的问题:输入参数空间由输入之一(此处为v)的离散值细分,我想知道如何提取表的一个子集,其中第二个输入(q)的值会产生一些极值输出的最大值(例如,最接近特定值的alpha,以便我们在其他输入的子集中寻求min(abs(quant-alpha)))保持不变。例如,假设alpha = 0.5
fd1 <- subset(fd,???min(abs(quant-0.5)),by=v)
因此,结果表将具有v的唯一值和满足指定alpha和v的min(abs(quant-alpha))的quant值。该表还必须包含q的相关值以及该行中包含的任何其他数据。
我认为应该为这个问题提供一个非常简单的解决方案,而且我还是个新手,不知道如何找到它!
您只是在尝试这样做吗?
fd[ , .SD[ which.min( abs(quant-0.5) ) ] , by = v ]
# v q quant
# 1: 0.01 0.42 0.5010319
# 2: 0.02 0.71 0.4983129
# 3: 0.03 0.47 0.4996793
# 4: 0.04 0.01 0.5028813
# 5: 0.05 0.93 0.5009666
# 6: 0.06 0.93 0.4996367
您将获得by = v
满足条件的每个组()的行,which.min
以作为子集.SD
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句