Search code examples
rlistloopsassign

How to assign values to the i-th index of a list using a loop?


I have integer values which are called player.i.team.j.coach.k where i ranges over the values 1-11, j ranges over the values 1-30 and k ranges over the values 1-10.

I'm trying to store the 11 players of each team j and coach k in a list (each coach will be assigned to 30 teams), for example

team.j.coach.k <- c(player.1.team.j.coach.k, player.2.team.j.coach.k,
                    player.3.team.j.coach.k, player.4.team.j.coach.k,
                    player.5.team.j.coach.k, player.6.team.j.coach.k, 
                    player.7.team.j.coach.k, player.8.team.j.coach.k, 
                    player.9.team.j.coach.k, player.10.team.j.coach.k, 
                    player.11.team.j.coach.k)

And I'm trying to use loops for this. The problem is that my code is not working:

First I define empty lists where I will store my teams:

for (j in 1:30) {
  for (k in 1:10) {
    assign(paste0("team.",j,".coach.",k),c())
  }
}

So for example

> team.1.coach.1
NULL

But now the following code throws an error

for (i in 1:11) {
  for (j in 1:30) {
    for (k in 1:10) {
      assign(get(paste0("team.", j, ".coach.", k))[i], 
             get(paste0("player.",i,".team.",j,".coach.",k)))
    }
  }
}

and the error is "invalid first argument". Alternatively, the following code throws an error as well

for (i in 1:11) {
  for (j in 1:30) {
    for (k in 1:10) {
      get(paste0("team.", j, ".coach.", k))[i] <- get(paste0("player.", i, ".team.", j, ".coach.", k))
    }
  }
}  

Where the error is "target of assignment expands to non-language object".

Note: I created the objects player.i.team.j.coach.k using assign() and a loop, that's why they are stored in a list yet.


Solution

  • OK, after struggling so much and watching my reputation going down the toilet due to several downvotes, I managed to solve my problem. I used a variable count inside my loop to store everything as a single list, and then splitting my list into my desired lists:

    my.list<-c()
    
    count=0
    
    for (c in 1:10){for (b in 1:30){for (a in 1:11){assign(paste0("player.",a,".team.",b,".coach.",c),a+b+c);count=count+1;my.list[count]<-get(paste0("player.",a,".team.",b,".coach.",c))}}}
    

    And now I split my.list to get the lists that I want:

    for (c in 1:10){for (b in 1:30){assign(paste0("team.",b,".coach.",c),my.list[(11*(b+30*(c-1))-10):(11*(b+30*(c-1)))])}}
    

    And I get exactly what I want:

    > for (b in 1:30){for (c in 1:10){print(get(paste0("team.",b,".coach.",c)))}}
     [1]  3  4  5  6  7  8  9 10 11 12 13
     [1]  4  5  6  7  8  9 10 11 12 13 14
     [1]  5  6  7  8  9 10 11 12 13 14 15
     [1]  6  7  8  9 10 11 12 13 14 15 16
     [1]  7  8  9 10 11 12 13 14 15 16 17
     [1]  8  9 10 11 12 13 14 15 16 17 18
     [1]  9 10 11 12 13 14 15 16 17 18 19
     [1] 10 11 12 13 14 15 16 17 18 19 20
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1]  4  5  6  7  8  9 10 11 12 13 14
     [1]  5  6  7  8  9 10 11 12 13 14 15
     [1]  6  7  8  9 10 11 12 13 14 15 16
     [1]  7  8  9 10 11 12 13 14 15 16 17
     [1]  8  9 10 11 12 13 14 15 16 17 18
     [1]  9 10 11 12 13 14 15 16 17 18 19
     [1] 10 11 12 13 14 15 16 17 18 19 20
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1]  5  6  7  8  9 10 11 12 13 14 15
     [1]  6  7  8  9 10 11 12 13 14 15 16
     [1]  7  8  9 10 11 12 13 14 15 16 17
     [1]  8  9 10 11 12 13 14 15 16 17 18
     [1]  9 10 11 12 13 14 15 16 17 18 19
     [1] 10 11 12 13 14 15 16 17 18 19 20
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1]  6  7  8  9 10 11 12 13 14 15 16
     [1]  7  8  9 10 11 12 13 14 15 16 17
     [1]  8  9 10 11 12 13 14 15 16 17 18
     [1]  9 10 11 12 13 14 15 16 17 18 19
     [1] 10 11 12 13 14 15 16 17 18 19 20
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1]  7  8  9 10 11 12 13 14 15 16 17
     [1]  8  9 10 11 12 13 14 15 16 17 18
     [1]  9 10 11 12 13 14 15 16 17 18 19
     [1] 10 11 12 13 14 15 16 17 18 19 20
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1]  8  9 10 11 12 13 14 15 16 17 18
     [1]  9 10 11 12 13 14 15 16 17 18 19
     [1] 10 11 12 13 14 15 16 17 18 19 20
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1]  9 10 11 12 13 14 15 16 17 18 19
     [1] 10 11 12 13 14 15 16 17 18 19 20
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 10 11 12 13 14 15 16 17 18 19 20
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 11 12 13 14 15 16 17 18 19 20 21
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 12 13 14 15 16 17 18 19 20 21 22
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 13 14 15 16 17 18 19 20 21 22 23
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 14 15 16 17 18 19 20 21 22 23 24
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 15 16 17 18 19 20 21 22 23 24 25
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 16 17 18 19 20 21 22 23 24 25 26
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 17 18 19 20 21 22 23 24 25 26 27
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 18 19 20 21 22 23 24 25 26 27 28
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 19 20 21 22 23 24 25 26 27 28 29
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 20 21 22 23 24 25 26 27 28 29 30
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 21 22 23 24 25 26 27 28 29 30 31
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 22 23 24 25 26 27 28 29 30 31 32
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 23 24 25 26 27 28 29 30 31 32 33
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 24 25 26 27 28 29 30 31 32 33 34
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 25 26 27 28 29 30 31 32 33 34 35
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 34 35 36 37 38 39 40 41 42 43 44
     [1] 26 27 28 29 30 31 32 33 34 35 36
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 34 35 36 37 38 39 40 41 42 43 44
     [1] 35 36 37 38 39 40 41 42 43 44 45
     [1] 27 28 29 30 31 32 33 34 35 36 37
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 34 35 36 37 38 39 40 41 42 43 44
     [1] 35 36 37 38 39 40 41 42 43 44 45
     [1] 36 37 38 39 40 41 42 43 44 45 46
     [1] 28 29 30 31 32 33 34 35 36 37 38
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 34 35 36 37 38 39 40 41 42 43 44
     [1] 35 36 37 38 39 40 41 42 43 44 45
     [1] 36 37 38 39 40 41 42 43 44 45 46
     [1] 37 38 39 40 41 42 43 44 45 46 47
     [1] 29 30 31 32 33 34 35 36 37 38 39
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 34 35 36 37 38 39 40 41 42 43 44
     [1] 35 36 37 38 39 40 41 42 43 44 45
     [1] 36 37 38 39 40 41 42 43 44 45 46
     [1] 37 38 39 40 41 42 43 44 45 46 47
     [1] 38 39 40 41 42 43 44 45 46 47 48
     [1] 30 31 32 33 34 35 36 37 38 39 40
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 34 35 36 37 38 39 40 41 42 43 44
     [1] 35 36 37 38 39 40 41 42 43 44 45
     [1] 36 37 38 39 40 41 42 43 44 45 46
     [1] 37 38 39 40 41 42 43 44 45 46 47
     [1] 38 39 40 41 42 43 44 45 46 47 48
     [1] 39 40 41 42 43 44 45 46 47 48 49
     [1] 31 32 33 34 35 36 37 38 39 40 41
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 34 35 36 37 38 39 40 41 42 43 44
     [1] 35 36 37 38 39 40 41 42 43 44 45
     [1] 36 37 38 39 40 41 42 43 44 45 46
     [1] 37 38 39 40 41 42 43 44 45 46 47
     [1] 38 39 40 41 42 43 44 45 46 47 48
     [1] 39 40 41 42 43 44 45 46 47 48 49
     [1] 40 41 42 43 44 45 46 47 48 49 50
     [1] 32 33 34 35 36 37 38 39 40 41 42
     [1] 33 34 35 36 37 38 39 40 41 42 43
     [1] 34 35 36 37 38 39 40 41 42 43 44
     [1] 35 36 37 38 39 40 41 42 43 44 45
     [1] 36 37 38 39 40 41 42 43 44 45 46
     [1] 37 38 39 40 41 42 43 44 45 46 47
     [1] 38 39 40 41 42 43 44 45 46 47 48
     [1] 39 40 41 42 43 44 45 46 47 48 49
     [1] 40 41 42 43 44 45 46 47 48 49 50
     [1] 41 42 43 44 45 46 47 48 49 50 51