矩阵中循环聚合结果的r倍数

矩阵中循环聚合结果的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

我试图对循环执行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 (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)
  }
}