R: Creating new variables in a for loop and assign values

时间:2019-03-17 22:52:47

标签: r assign

I would like to create a new variable, assign a list of values, and write into a hierarchical data frame. I tried the below but it is not writing in.

for(i in 1:sample){
    for(j in 1:10){
      x[,j]<-0
      name <- paste("hierdata[[i]]$Test", j, sep = "_")
      assign(name, rowSums(alpha+beta+x)))
    }
}

Appreciate some help.

2 个答案:

答案 0 :(得分:0)

要解决@Moody_Mudskipper的评论:

声明分层数据的最佳方法是使用索引列表:

hierdata <- lapply(1:sample,
       function(iterator)
         {
         temp_list <- lapply(1:10,
                function(j)
                  {
                  x[,j]<-0
                  value <- rowSums(alpha+beta+x)
                  return(value)
                })
         names(temp_list) <- lapply(1:10,function(j){paste0("temp_",j)})
         return(temp_list)
       })

并不是真正的“一个班轮”,但它包含所有好的“东西”。 Lapply默认情况下会返回列表,因此它将列表嵌套在每个列表中。

希望您喜欢一些“好的做法”。 :) 我只是想在第一次尝试中准确解决您的问题。

答案 1 :(得分:-1)

尝试使用

for(i in 1:sample){
  hierdata[[i]] <- list()
  for(j in 1:10){
    code_j_init <- paste0("hierdata[[",i,"]]$Test_",j,"<- list()")
    eval(parse(text = code_j_init))
    hierdata[[i]][[j]] <- list(1,2,3)
  }
}

for(i in 1:sample){
  hierdata[[i]] <- list()
  names <- c()
  for(j in 1:10){
    hierdata[[i]][[j]] <- list(1,2,3)
    names <- c(names,paste0("Test_",j))
  }
  names(hierdata[[i]]) <- names
}