对于使用小数的循环

时间:2017-11-23 19:49:57

标签: r for-loop

我想知道我是否可以创建一个for循环,其中小数点上升。我试着写:

for (i in seq(2,6,.1)) 
{
   data1 <- data[data$x1 > i,]
   model <- lm(y~x1, data = data1)
   r = summary(model1)$r.squared
   result[[i]] = r
} 

但结果只给出5个观察结果,仅取2-6的整数。

有没有办法解决这个问题。

2 个答案:

答案 0 :(得分:1)

循环中的

result[[i]]永远不会使用i的十进制值, 因为列表索引必须是整数。

除此之外,如果您改变了对.1增量的思考方式,则可以以.1为增量循环:

for (i in seq(20, 60)) {
  div <- i / 10
  data1 <- data[data$x1 > div,]
  model <- lm(y~x1, data = data1)
  result[[i]] = summary(model1)$r.squared
} 

答案 1 :(得分:0)

你做到这一点的方式不是最好的R.这种方式更好(但不是最好的)。但它接近您的原始代码。

data = data.frame(y = runif(100),  x1 = runif(1000, 1,7))

f = function(x, data)
{
  data1 <- data[data$x1 > x,]
  model <- lm(y ~ x1, data = data1)
  r <- summary(model)$r.squared
  return(r)
}

results = lapply(seq(2,6,.1), f, data)