0

I have a data frame like this :

     A  B C  D  E
e1   4  3 2  3 13
e2  21 17 5 12 19
e3  13  5 4 12  9
e4  30 18 7  7 30
e5   6 20 1  1 11
e6  16 12 6  8 23
e7  22 16 6  6 22
e8   2 11 1  2 11
e9   5 15 5  0 26
e10 21 19 6  2 22
e11 14 20 6  6 21

And given a number X, if want to do subsets of this data frame of size X rows. For example, il X = 2, I would like to have e1+e2, e3+e4, etc.

Is there a simple way to do this ?

Biopy
  • 167
  • 1
  • 5
  • 15

1 Answers1

2

You can use split like this. You can then access the lists elements like this: df1[[1]].

df1 <- read.table(text="row     A  B C  D  E
e1   4  3 2  3 13
e2  21 17 5 12 19
e3  13  5 4 12  9
e4  30 18 7  7 30
e5   6 20 1  1 11
e6  16 12 6  8 23
e7  22 16 6  6 22
e8   2 11 1  2 11
e9   5 15 5  0 26
e10 21 19 6  2 22
e11 14 20 6  6 21",header=TRUE,stringsAsFactors=FALSE)

n <- 2
split(df1, rep(1:(nrow(df1)/n+nrow(df1)%%n),each=n))
$`1`
  row  A  B C  D  E
1  e1  4  3 2  3 13
2  e2 21 17 5 12 19

$`2`
  row  A  B C  D  E
3  e3 13  5 4 12  9
4  e4 30 18 7  7 30

$`3`
  row  A  B C D  E
5  e5  6 20 1 1 11
6  e6 16 12 6 8 23

$`4`
  row  A  B C D  E
7  e7 22 16 6 6 22
8  e8  2 11 1 2 11

$`5`
   row  A  B C D  E
9   e9  5 15 5 0 26
10 e10 21 19 6 2 22

$`6`
   row  A  B C D  E
11 e11 14 20 6 6 21
Pierre Lapointe
  • 16,017
  • 2
  • 43
  • 56