我有
FORCADA_ALEATORIOS <- c(0.77503776, 0.95981560, 0.43858290, 0.96340018,
0.40830180, 0.27587142, 0.09719325, 0.87138411, 0.18396708,
0.36734687, 0.50293107, 0.05382047)
和数据框(BASE_DADOS
)如下所示
MEDIANA PERCENTUAL_ACUMULADO_ANTERIOR PERCENTUAIS_ACUMULADOS
17 0.0000000 0.9354839
1308 0.9354839 0.9677419
1656 0.9677419 1.0000000
我需要在MEDIANA
和FORCADA_ALEATORIOS
之间选择PERCENTUAL_ACUMULADO_ANTERIOR
列值,而无需循环播放,并且效率最高,因为我会这样做几次就像一百万。
在这种情况下的预期结果:
PERCENTUAIS_ACUMULADOS
下面是我构建的代码,但速度很慢。
(17,1308,17,1308,17,17,1656,17,17,17,17,17)
非常感谢你!
答案 0 :(得分:0)
这有效:
do.call(rbind,lapply(FORCADA_ALEATORIOS,
function(x) {
mdf[(mdf['PERCENTUAL_ACUMULADO_ANTERIOR'] <= x) &
(mdf['PERCENTUAIS_ACUMULADOS'] >= x)]}))[,1]
## [1] 17 1308 17 1308 17 17 17 17 17 17 17 17
<强> 数据:的强>
mdf <- structure(list(MEDIANA = c(17L, 1308L, 1656L), PERCENTUAL_ACUMULADO_ANTERIOR = c(0,
0.9354839, 0.9677419), PERCENTUAIS_ACUMULADOS = c(0.9354839,
0.9677419, 1)), .Names = c("MEDIANA", "PERCENTUAL_ACUMULADO_ANTERIOR",
"PERCENTUAIS_ACUMULADOS"), row.names = c(NA, 3L), class = "data.frame")