我的数据框将不会通过添加新行的嵌套for循环来维护其内容,有什么想法吗?

时间:2019-04-02 18:33:07

标签: r dataframe nested-loops

我正在尝试通过嵌套的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   
  }
}

如果我通过for循环传递exp_list(“ exp1a”,“ exp1b”,“ exp7”),希望返回一个包含60行的数据帧,每个实验的每次固定都包含20行。但是,我得到的是一个具有20行的数据帧,只有列表中的最后一个实验(在这种情况下为exp7)。这些行具有正确的值,但是某种原因导致该行要么不运行先前的实验,要么在重新启动内部循环时将其删除。任何帮助将不胜感激:)

0 个答案:

没有答案