首页 > 解决方案 > 如何在循环中动态创建具有动态名称的 data.frames,它们是列表的一部分

问题描述

我正在编写一个函数,它应该在事件发生后删除生物特征数据并将它们添加到列表中。切口部分工作正常。但是我想将新 data.frames 添加到列表中的部分没有。

下面的代码是我目前的状态。它创建动态列表元素,但仅将第一个单元格的数据添加到每个列表元素。

Event_search <- function(a,b,c){ # a = Data, b = Eventmarker, c = time to cut
  Return = list();
  x =nrow(b);   #Number of events
  for(i in 1:x){
    Start = b[i,7];   #Getting the time for an event
    Stop = Start + c; #Caluculating the endtime for an event based extraction
    Event_Data = data.frame();
    Event_Data <- a[ which(a[,7]>=Start & a[,7] <=Stop), ]; #writing the extrated data in a data.frame
    Return[paste("Event", i , sep="_")] <- Event_Data;  #this one creates 
  };
  return(Return);
}

此代码还会创建警告:number of items to replace is not a multiple of replacement length

如果我通过更改手动添加 data.frame 名称:

Return[paste("Event", i , sep="_")] <- Event_Data;Return$Event <- Event_Data;

它添加了整个 data.frame,但不幸的是,该解决方案不会是动态的。

所以我的问题是,如何创建能够容纳整个数据框的动态列表元素。

标签: r

解决方案


罗兰兹的评论起到了作用。

Use double brackets: Return[[paste("Event", i , sep="_")]] <- Event_Data


推荐阅读