是否有"申请"申请这个而不是在基础R中的两个数据帧的每一行上进行双循环(不使用包)?
listD <- matrix(1:6, ncol=2)
listD <- split(listD,seq(NROW(listD)))
df1 <- data.frame(x=c(1,2), y=c(3,4))
df2 <- data.frame(x=c(3,2), y=c(1,1))
testFunc <- function(a, b, c) a * (b + c)
for (j in 1:nrow(df1)) {
for (s in 1:nrow(df2)) {
print(lapply(listD, FUN= testFunc, b=df1[j,], c=df2[s,]))
}
}
谢谢!
答案 0 :(得分:1)
使用outer
产生副作用:
invisible(outer(as.matrix(df1), as.matrix(df2), FUN = Vectorize(function (b, c) {
print(lapply(listD, testFunc, b, c))
NULL
})))
我不知道这是否对你的for循环有所改善。有一个神话围绕着R中的循环必须不惜一切代价避免(也许它们看起来太容易了?)