找到前一行和每行的R ^ 2

时间:2016-02-11 11:24:21

标签: r loops for-loop

我有一个X-Y表,希望找到所有行的R ^ 2值,然后减去一行并再次执行该功能。 我已经开始使用这个功能了:

df<-data.frame(x=1:10,y=1:10)

R2<-function(df)
  for(i in length(df$x)){
  Rsq<-lm(x ~ y, data=df)
  print(Rsq)
}

所以这给了我整个数据帧的R ^ 2,我似乎无法通过每次减去一行来计算出如何连续执行该函数。

1 个答案:

答案 0 :(得分:3)

假设想要的是找到y [-1]对x [-2],y [-2]对x [-2]等的R平方。

sapply(1:nrow(df), function(i) summary(lm(y ~ x, df, subset = -i))$r.squared)

请注意,我们可以通过在上面的代码中将r.squared替换为adj.r.squared来获得调整后的R平方。

如果你真的想编写一个连续打印R平方值的循环,那么就可以这样做:

R2 <- function(df) {
  for(i in 1:nrow(df)) {
    Rsq <- summary(lm(x ~ y, data = df, subset = -i))$r.squared
    print(Rsq)
  }
}
R2(df)