我应该用于循环吗?还是申请?

时间:2017-04-24 18:42:07

标签: r

这是我的第一篇文章。

我有Nhl草案的这个数据框。 我想做的是使用某种递归函数来创建10个对象。

所以,我想通过按年度对Nhl数据帧进行子集来创建这10个对象。 以下是数据集的前6行(nhl_draft)

Year Overall                  Team
1 2000       1    New York Islanders
2 2000       2     Atlanta Thrashers
3 2000       3        Minnesota Wild
4 2000       4 Columbus Blue Jackets
5 2000       5    New York Islanders
6 2000       6   Nashville Predators
            Player    PS
1    Rick DiPietro  49.3
2     Dany Heatley  95.2
3   Marian Gaborik 103.6
4 Rostislav Klesla  34.5
5     Raffi Torres  28.4
6   Scott Hartnell  74.5

我想通过将2000年〜2009年的年份分列来创建10个对象。 我试过了,

for (i in 2000:2009) {
  nhl_draft.i <- subset(nhl_draft, Year == "i")
}

但这并没有做任何事情。这个for循环的问题是什么?你能建议其他方式吗?

请告诉我这毕竟是否令人困惑,这是我的第一篇文章......

1 个答案:

答案 0 :(得分:3)

以下代码可能会修复您的错误。

# Create an empty list
nhl_list <- list()

for (i in 2000:2009) {
  # Subset the data frame based on Year
  nhl_draft_temp <- subset(nhl_draft, Year == i)
  # Assign the subset to the list
  nhl_list[[as.character(i)]] <- nhl_draft_temp
}

但你可以考虑split,这更简洁。

nhl_list <- split(nhl_draft, f = nhl_draft$Year)