r语言 - 将函数应用于列表的每个元素和每个数据框的每一行



是否有一个"应用"应用程序,而不是在基本 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,]))
  }
}

谢谢!

使用outer来表示其副作用:

invisible(outer(as.matrix(df1), as.matrix(df2), FUN = Vectorize(function (b, c) {
  print(lapply(listD, testFunc, b, c))
  NULL
})))

我不知道这是否是对你的 for 循环的改进。有一个神话在流传,必须不惜一切代价避免 R 中的 for 循环(也许它们看起来太容易了?

最新更新