我想知道我是否可以创建一个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的整数。
有没有办法解决这个问题。
答案 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)