矩阵中循环聚合结果的r倍数
我试图对循环执行50次矩阵中循环聚合结果的r倍数,r,for-loop,matrix,R,For Loop,Matrix,我试图对循环执行50次for,每次生成三列和13行数据,存储在矩阵中,因此最终产品应该有13行,但有150列。也就是说,每次循环的for结果都会聚合到前一个循环的右侧。 以下是我的尝试: predict.data<-matrix(nrow=13,ncol = 150) for (i in 1:50){ x <- rnorm(15) y <- x + rnorm(15) new <- data.frame(x = seq(-3, 3, 0.5)) for
for
,每次生成三列和13行数据,存储在矩阵中,因此最终产品应该有13行,但有150列。也就是说,每次循环的for
结果都会聚合到前一个循环的右侧。
以下是我的尝试:
predict.data<-matrix(nrow=13,ncol = 150)
for (i in 1:50){
x <- rnorm(15)
y <- x + rnorm(15)
new <- data.frame(x = seq(-3, 3, 0.5))
for (j in 1:nrow(new)){
predict.data[j,] <- predict(lm(y ~ x), new, interval = "prediction")
colnames(predict.data) <- paste(c("fit", "lwr","upr"), 1:50)
}
}
也许我在代码中遗漏了一点。
我还需要连续粘贴列名:fit1、lwr1、upr1、fit2、lwr2、upr2、
有人能帮我纠正和调整这个错误吗
预期结果如下所示:
新更新
当
new
是一个矩阵,而不是lm
时,我有另一个问题,我从包“glmnet”中得到cv.glmnet
。我只得到最终结果的三分之一的数据,也就是说只有50列而不是150列。而且colnames不再正确了。这会有用的
library(magrittr) # sorry I like pipes
predict.data <- list() # versitle across data structures
for (i in 1:50){
x <- rnorm(15)
y <- x + rnorm(15)
new <- data.frame(x = seq(-3, 3, 0.5))
predict.data[[i]] <- predict(lm(y ~ x), new, interval = "prediction") %>%
magrittr::set_colnames(., paste0(colnames(.), i))
}
predict.data %<>% do.call(cbind, .) # make your wide matrix
library(magrittr)#对不起,我喜欢管道
使用基本R预测.data。我使用cbind
predict.data<-NULL #empty object
for (i in 1:50){
x <- rnorm(15)
y <- x + rnorm(15)
new1 <- data.frame(x = seq(-3, 3, 0.5))
for (j in 1:nrow(new1)){
res <- predict(lm(y ~ x), new1, interval = "prediction")
colnames(res) <- paste0(c("fit", "lwr","upr"), i)
predict.data<-cbind(predict.data,res)
}
}
predict.data谢谢,为什么它会停在fit34
,我看不到其余的列?你收到这个消息了吗[到达getOption(“max.print”)--省略了xx行]
?你可以用选项(max.print=1000)更改max items的截止值
new
是一个矩阵,而不是lm
时,我有另一个问题,我从包“glmnet”中得到了cv.glmnet
。我只得到最终结果的三分之一的数据,也就是说只有50列而不是150列。而且colnames已经不正确了。
library(magrittr) # sorry I like pipes
predict.data <- list() # versitle across data structures
for (i in 1:50){
x <- rnorm(15)
y <- x + rnorm(15)
new <- data.frame(x = seq(-3, 3, 0.5))
predict.data[[i]] <- predict(lm(y ~ x), new, interval = "prediction") %>%
magrittr::set_colnames(., paste0(colnames(.), i))
}
predict.data %<>% do.call(cbind, .) # make your wide matrix
predict.data<-NULL #empty object
for (i in 1:50){
x <- rnorm(15)
y <- x + rnorm(15)
new1 <- data.frame(x = seq(-3, 3, 0.5))
for (j in 1:nrow(new1)){
res <- predict(lm(y ~ x), new1, interval = "prediction")
colnames(res) <- paste0(c("fit", "lwr","upr"), i)
predict.data<-cbind(predict.data,res)
}
}