在循环中向DF添加新列

时间:2019-09-15 13:24:51

标签: r loops for-loop

我有一个循环,我试图为列表列表创建一个新列,该列表的常数取决于值j(j是从1到12的数字)。循环的其余部分工作,上一行重新命名同一数据框的列。

for(i in 1:length(idw.list)){
  idw.output[[i]] <- list()
  for(j in 1:length(idw.list[[i]])){
    idw.output[[i]][[j]]= as.data.frame(idw.list[[i]][[j]]) 
    names(idw.output[[i]][[j]])[1:3] <- c("LON", "LAT", "MAXMEAN")
    (idw.output[[i]][[j]])[, "MONTH"] = j
}
}

我已经尝试过:

(idw.output[[i]][[j]])[, "MONTH"] = j

这将导致此错误:

Error in (idw.output[[i]][[j]]) <- `*vtmp*` : 
  could not find function "(<-"

现在数据看起来像这样:


    LON          LAT        MAXMEAN
1   11.66847    -18.04208   30.07742    
2   11.76847    -18.04208   30.07742    
3   11.86847    -18.04208   30.07742

并且我想添加该列,以便在j = 1(第一个循环)的情况下:

    LON          LAT        MAXMEAN    MONTH
1   11.66847    -18.04208   30.07742    1
2   11.76847    -18.04208   30.07742    1
3   11.86847    -18.04208   30.07742    1

我将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

帖子的再现性不强,发表评论的时间太长了,也许您可​​以尝试

for(i in seq_along(idw.list)) {
   for(j in seq_along(idw.list[[i]])) {
       names(idw.list[[i]][[j]])[1:3] <- c("LON", "LAT", "MAXMEAN")
       idw.list[[i]][[j]]["Month"] = j
     }
}