使用 apply 系列函数替换 R 中的嵌套 for 循环

Chr*_*ton 2 r apply

我写了一个接受 3 个参数的函数:

download_data <- function(team, year, df) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我有两个字符向量,我想用它们分别为上述函数提供第一个和第二个参数,以便向量的每个组合被调用一次:

nfl_teams <- c("bills", "dolphins", "jets", "patriots")

years <- c("2002", "2003", "2004", "2005")
Run Code Online (Sandbox Code Playgroud)

我可以使用嵌套的 for 循环很容易地做到这一点:

for (i in 1:4) {
  for ( j in 1:4) {
    salary_data <- download_data(nfl_teams[i], years[j], salary_data)
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,这似乎是实现此目的的“un-R”方式,最好使用其中一个apply功能。然而,在阅读并尝试了所有这些之后,我无法完成这个看似简单的任务。

看起来这可能是一个矩阵,因此apply会起作用吗?

pic*_*ick 8

您可以apply像循环一样使用这些函数,但语法不同

dummy <- function(x, y) paste(x, y)
sapply(1:4, function(i) sapply(1:4, function(j) dummy(nfl_teams[i], years[j])))
Run Code Online (Sandbox Code Playgroud)