1

如果我在这里问的问题太基本,请原谅我(我在 R 方面不是太有经验),但我目前正在尝试在 R 中绘制一些自然三次样条曲线,我正碰壁。

我有一个数据集,它有大约 3500 行和大约 30 列。这是一个包含大约 270 名不同棒球运动员整个职业生涯的单赛季棒球统计数据的数据集。所以基本上,我有大约 270 个时间序列(每个玩家一个)。

我对通过称为 wOBA 的东西随时间衡量的球员表现感兴趣,所以我想为每个样条拟合一个自然三次样条,然后将所有样条叠加在一个图表上。是的,它必须是自然三次样条。据我所知,这是在ggplot中做到这一点的唯一方法。

我目前的代码是:

  #initialize plot
  plot <- ggplot(data, aes(x=age, y=wOBA, color=playerID, group=playerID)) + theme(legend.position="none")

  #loop through players to add splines
  for (i in unique(data$playerID)) {
    plot <- plot + stat_smooth(method = lm, formula = y~ns(x,3), data=data[which(data$playerID=="i"),list(playerID,age,wOBA)], se=FALSE)
}

我已经检查过我可以为几个不同的玩家手动运行循环内的代码片段,并且情节完全符合我的要求。但是当我尝试运行这个循环时,它需要很长时间。我检查了这个循环运行时的内存使用情况,它肯定用完了(我在一台 4GB 的机器上)。

我有点困惑为什么会这样。我没想到只适合 270 条样条会导致 R 在执行时完全用完 > 2gb 的可用内存。

我对 R 有点陌生,所以我确定我错过了一些东西。任何人都可以提供任何指示吗?对不起,如果这是一个完全愚蠢的问题!

4

0 回答 0