首页 > 解决方案 > R:在for循环中创建新变量并赋值

问题描述

我想创建一个新变量,分配一个值列表,然后写入一个分层数据框。我尝试了以下内容,但没有写入。

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)))
    }
}

感谢一些帮助。

标签: rassign

解决方案


要解决 @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 默认返回列表,因此它只是将列表嵌套在每个列表中。

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


推荐阅读