考虑以下数据:
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
进行三次计算?
答案 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)