【问题标题】:Trying to loop through a list to do repeated mutations尝试遍历列表以进行重复突变
【发布时间】:2020-10-15 21:17:39
【问题描述】:

感谢您的帮助,我已经收到here 转... 这:

进入这个:

我只对阿斯顿维拉一支球队所做的事情,现在我想对数据集中的所有球队进行尝试。数据集的前15行如下:

我想遍历数据并为所有团队创建额外的列,就像我为上面的阿斯顿维拉所做的那样。 首先,我创建了一个包含 20 个团队的列表并将其称为“团队”。然后我尝试了...

for(i in teams){
  mydata %>% 
    mutate(
      HG = ifelse(HomeTeam == i, FTHG,
                  ifelse(HomeTeam != i, 0, 0)),
      AG = ifelse(AwayTeam == i, FTAG,
                  ifelse(AwayTeam != i, 0, 0)),
      THG = cumsum(HG),
      TAG = cumsum(AG),
      Tot = THG+TAG
    )
  
}

但输出仅显示它为西汉姆联队工作,就像它只为西汉姆联队循环然后停止。即使这样也不对。。

它应该在 THG、TAG 和 Tot 列中分别显示每支球队的主场进球、客场进球和总得分,但这根本没有发生。如上所述,当我分离出一支球队阿斯顿维拉时效果很好。

我哪里错了?

如何保存输出?

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow。我无法理解您到底要做什么,但是 loop+mutate 会让您改变循环内的所有行...并且您会覆盖您在前一个循环中所做的事情。. 不是“西汉姆”最后一个您的对象(向量)“团队”中的项目?

标签: r for-loop multiple-columns dplyr


【解决方案1】:

我认为你浏览列表的方式是错误的。

for (i in 1:length(teams)) {
  teams[[i]] ...
  ...
  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    相关资源
    最近更新 更多