【问题标题】:Creating a list of data frames using indexes for start and stop, in R在 R 中使用开始和停止索引创建数据帧列表
【发布时间】:2013-11-18 22:33:37
【问题描述】:

在 R 中,获取任何大型数据框(例如 300,000 行和 30 列)。我想使用存储在另一个数据框中的开始和停止索引值创建数据框列表(两列,第一列是开始值,第二列包含停止值。)开始-停止中的行数df 将是存储在列表中的数据帧数(在这个小示例中为 6)。对我来说,听起来可能有一个简单的功能可以做到这一点,但在我总是在使用 split 命令或使用不同的条件语句之前创建数据帧列表之前,所以我做了一些研究但找不到解决方案。另外,我在下面进行了双重循环,这不是可取的。非常感谢任何帮助!

启动、停止数据帧示例

> df
     headID tailID
[1,]    688    704
[2,]   2576   2583
[3,]   4005   4018
[4,]   4336   5761
[5,]   5762   7201
[6,]   7202   8641

所以我在想类似(伪代码):

n <- length(bigDF)
subList <- list()
start.idx <- NA
obs <- dim(bigDF)
for(i in 2:obs){
  for(j in 1:df) {
    start.idx <- df$headID[j]
  }                                                                                    
  else if 
end.idx <- df$tailID[j]
subMat <- bigDF[start.idx:end.idx,]
subList[[counter]] <- subMat
start.idx <- NA
counter <- counter + 1
  }
}
}

【问题讨论】:

    标签: r list indexing dataframe


    【解决方案1】:

    我会写一个函数并应用它...

    f <- function(x, data) {
        data[x[1]:x[2],]
    }
    
    apply(df, 1, f, bigDF)
    

    【讨论】:

    • 这太好了,谢谢!我仍在学习编写自己的函数,所以这是一个很大的帮助。在我看到结果之后,它总是更有意义。
    • 我想诀窍是应用索引,而不是 bigDF
    猜你喜欢
    • 2017-01-18
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2020-04-04
    • 1970-01-01
    • 2020-04-22
    • 2021-12-31
    相关资源
    最近更新 更多