首页 > 解决方案 > 我的数据框不会通过嵌套的 for 循环来维护其内容,该循环会附加新行

问题描述

我试图通过迭代嵌套的 for 循环将行添加到数据框中,一个循环迭代一个向量以创建另一个向量,另一个循环迭代第二个向量以提取值。(不是一个很好的解释,但我不知道该怎么说,代码应该清楚发生了什么。)但是,每次遍历外循环时数据框都会重置,即使我在其中找不到任何内容可能导致它。

我尝试在不同的点(在每个循环结束时)返回数据帧,并尝试使用不同的方法来追加行(rbind()一次,单个元素),但在任何一个方面都没有运气。

exp_list is a vector of csv filenames (strings), 
exp_fixmeans creates a vector of numeric values of length fixnum (20, in this case), 
the nested loop goes through each element of the vector and appends the data frame with appropriate values  


#initialization of the data frame
dat <- data.frame(matrix(ncol = 3, nrow = 0))
x <- c("pupil", "fixnum", "exp")
colnames(dat) <- x

#for loop iterating through experiments
n <- length(exp_list)

for(i in n){
 
  #creates a vector of average pupil size at each fix of the current 
  #experiment
  pupil <- exp_fixmeans(exp_list[i], fixnum)
 
  #iterates through each fixation, appending appropriate values to dat
  for(j in 1:fixnum){
    newrow <- c(as.numeric(pupil[j]), as.numeric(j), exp_list[i])
    dat[nrow(dat)+1,] <- newrow   
  }
}

如果我exp_list("exp1a", "exp1b", "exp7")通过for循环,我希望得到一个有60行的数据框,每个实验的每个固定20行。但是,我得到的是一个有 20 行的数据框,只有列表中的最后一个实验(exp7在本例中为 )。这些行具有正确的值,但某些原因导致它要么不运行以前的实验,要么在重新启动内部循环时删除它们。任何帮助,将不胜感激 :)

标签: rdataframenested-loops

解决方案


推荐阅读