首页 > 解决方案 > 将数据框附加到 R 中的列表

问题描述

我刚开始使用 R 编程,对你说的这方面的知识很少或根本没有。当我尝试将数据框附加到列表时。

我有以下代码:

for(i in 1:NumberOfCoresUse)
{
  if(i != NumberOfCoresUse)
  {
    ListOfData <- list(unlist(ListOfData),RawTrainData[((i-1)*ApproximateRowsPerCore+1):(i*ApproximateRowsPerCore),])
  } else
  {
    ListOfData <- list(unlist(ListOfData),RawTrainData[((i-1)*ApproximateRowsPerCore+1):(MaxRecords),])
  }
}

当我尝试以下操作时,数据框已完美添加到列表中:

ListOfData <- list(RawTrainData[((i-1)*ApproximateRowsPerCore+1):(i*ApproximateRowsPerCore),])

或者,也许当我编写以下代码时,2 个数据帧完美地添加到列表中:

ListOfData <- list(RawTrainData[((i-1)*ApproximateRowsPerCore+1):(i*ApproximateRowsPerCore),],RawTrainData[((i+1-1)*ApproximateRowsPerCore+1):((i+1)*ApproximateRowsPerCore),])

标签: rlistdataframe

解决方案


不需要循环,尝试使用repsplit

df <- data.frame(1, 1:10, sample(LETTERS[1:3], 10, replace = TRUE))
NumberOfCoresUse <- 3
split(df, sort(rep(1:NumberOfCoresUse, length.out=nrow(df))))
$`1`
  X1 X1.10 sample.LETTERS.1.3...10..replace...TRUE.
1  1     1                                        C
2  1     2                                        B
3  1     3                                        A
4  1     4                                        A

$`2`
  X1 X1.10 sample.LETTERS.1.3...10..replace...TRUE.
5  1     5                                        B
6  1     6                                        C
7  1     7                                        A

$`3`
   X1 X1.10 sample.LETTERS.1.3...10..replace...TRUE.
8   1     8                                        C
9   1     9                                        B
10  1    10                                        B

?split“从拆分返回的值是包含组值的向量列表”因此,您将输入数据帧拆分为已定义的部分。

?rep此处用于定义拆分的分组。


推荐阅读