在R中的循环中计算

时间:2018-05-17 14:42:26

标签: r loops

考虑以下数据:

slickFlights.filter{f =>
    val pred1 = departureLocation.map(f.departureLocation === _)
    val pred2 = arrivalLocation.map(f.arrivalLocation === _)
    val preds = pred1 ++ pred2  //Iterable
    val combinedPred = preds.foldLeft(slick.lifted.LiteralColumn(true))(_ && _)
    combinedPred
}

所以现在我有一个3 library(Benchmarking) x <- c(2, 3, 8) y <- c(1, 5, 10) k <- 25 d <- data.frame(x,y,k) x <- c(5, 2, 3, 4) y <- c(3, 5, 9, 10) k <- 30 d2 <- data.frame(x,y,k) d3 <- replicate(3, rbind(d, d2[sample(seq_len(nrow(d2)), 3), , drop=FALSE]), simplify = FALSE) 的列表。对于这3个data.frame中的每一个,我想执行以下计算:

data.frame

但我没有使用该代码三次,而是将e1 <- with(subset(d3[[1]], k == 25), dea(d3[[1]]$x, d3[[1]]$y, XREF = x, YREF = y)) e2 <- with(subset(d3[[1]], k == 30), dea(d3[[1]]$x, d3[[1]]$y, XREF = x, YREF = y)) we1 <- weighted.mean(eff(e1), d3[[1]]$y) we2 <- weighted.mean(eff(e2), d3[[1]]$y) va <- we2/we1 更改为[[1]][[2]],我可以使用循环来计算所有3 {{{ 1}}并创建一个新的[[3]],列出data.frame进行三次计算?

1 个答案:

答案 0 :(得分:0)

我们创建一个函数,然后遍历list并应用函数

f1 <- function(dat) {
   d1 <- subset(dat, k == 25)
   e1 <- with(d1, dea(dat$x, dat$y, XREF = x, YREF = y))
   d2 <- subset(dat, k == 30)
   e2 <- with(d2, dea(dat$x, dat$y, XREF = x, YREF = y))
   we1 <- weighted.mean(eff(e1), dat$y)
   we2 <- weighted.mean(eff(e2), dat$y)
   we2/we1

}

sapply(d3, f1)