-1

I am writing the following function:

for (i in 1:272){
  gh[[i]]<- c(df[i, 1],df[i, 2])}

Error: object 'gh' not found

Why is this? Why do I get this error? And how can I correct it?

with the following data structure:

 data.frame':   272 obs. of  2 variables:
 $ V1: Factor w/ 17 levels "exp_var_nocorr_1",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ V2: Factor w/ 17 levels "exp_var_nocorr_1",..: 2 3 4 5 6 7 8 9 10 11 ...

or this, just to have it more visually, here I have the first 33 rows:

     V1                V2
1    exp_var_nocorr_1 exp_var_nocorr_10
2    exp_var_nocorr_1 exp_var_nocorr_11
3    exp_var_nocorr_1 exp_var_nocorr_12
4    exp_var_nocorr_1 exp_var_nocorr_13
5    exp_var_nocorr_1 exp_var_nocorr_14
6    exp_var_nocorr_1 exp_var_nocorr_15
7    exp_var_nocorr_1 exp_var_nocorr_16
8    exp_var_nocorr_1 exp_var_nocorr_17
9    exp_var_nocorr_1  exp_var_nocorr_2
10   exp_var_nocorr_1  exp_var_nocorr_3
11   exp_var_nocorr_1  exp_var_nocorr_4
12   exp_var_nocorr_1  exp_var_nocorr_5
13   exp_var_nocorr_1  exp_var_nocorr_6
14   exp_var_nocorr_1  exp_var_nocorr_7
15   exp_var_nocorr_1  exp_var_nocorr_8
16   exp_var_nocorr_1  exp_var_nocorr_9
17  exp_var_nocorr_10  exp_var_nocorr_1
18  exp_var_nocorr_10 exp_var_nocorr_11
19  exp_var_nocorr_10 exp_var_nocorr_12
20  exp_var_nocorr_10 exp_var_nocorr_13
21  exp_var_nocorr_10 exp_var_nocorr_14
22  exp_var_nocorr_10 exp_var_nocorr_15
23  exp_var_nocorr_10 exp_var_nocorr_16
24  exp_var_nocorr_10 exp_var_nocorr_17
25  exp_var_nocorr_10  exp_var_nocorr_2
26  exp_var_nocorr_10  exp_var_nocorr_3
27  exp_var_nocorr_10  exp_var_nocorr_4
28  exp_var_nocorr_10  exp_var_nocorr_5
29  exp_var_nocorr_10  exp_var_nocorr_6
30  exp_var_nocorr_10  exp_var_nocorr_7
31  exp_var_nocorr_10  exp_var_nocorr_8
32  exp_var_nocorr_10  exp_var_nocorr_9
33  exp_var_nocorr_11  exp_var_nocorr_1

dput result:

structure(list(V1 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L), .Label = c("exp_var_nocorr_1", 
"exp_var_nocorr_10", "exp_var_nocorr_11"), class = "factor"), 
    V2 = structure(c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
    12L, 13L, 14L, 15L, 16L, 17L, 1L, 3L, 4L, 5L, 6L, 7L, 8L, 
    9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 1L), .Label = c("exp_var_nocorr_1", 
    "exp_var_nocorr_10", "exp_var_nocorr_11", "exp_var_nocorr_12", 
    "exp_var_nocorr_13", "exp_var_nocorr_14", "exp_var_nocorr_15", 
    "exp_var_nocorr_16", "exp_var_nocorr_17", "exp_var_nocorr_2", 
    "exp_var_nocorr_3", "exp_var_nocorr_4", "exp_var_nocorr_5", 
    "exp_var_nocorr_6", "exp_var_nocorr_7", "exp_var_nocorr_8", 
    "exp_var_nocorr_9"), class = "factor")), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", 
"25", "26", "27", "28", "29", "30", "31", "32", "33"))
Artem
  • 3,304
  • 3
  • 18
  • 41
  • 3
    Nothing in what you wrote explains why you think that `gh` exists. What *is* `gh` and how and where is it defined? Please give a [mcve]. Reading the following should help you understand what that would mean in R: [How to make a great R reproducible example?](https://stackoverflow.com/q/5963269/4996248). Also -- what exactly are you trying to do? It is unlikely that a loop is required. – John Coleman Sep 09 '18 at 00:03
  • 2
    To add to my last comment, perhaps you simply want something like `gh <- as.data.frame(t(df))`. There is no reason to write a loop to take a transpose. – John Coleman Sep 09 '18 at 00:16

1 Answers1

1

The problem with the code that you did not allocate the gh list before accessing it's elements. At first before access list elements you need to initialize it, please see the code below:

set.seed(123)

smpl <- structure(list(V1 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L), .Label = c("exp_var_nocorr_1", 
"exp_var_nocorr_10", "exp_var_nocorr_11"), class = "factor"), 
    V2 = structure(c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
    12L, 13L, 14L, 15L, 16L, 17L, 1L, 3L, 4L, 5L, 6L, 7L, 8L, 
    9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 1L), .Label = c("exp_var_nocorr_1", 
    "exp_var_nocorr_10", "exp_var_nocorr_11", "exp_var_nocorr_12", 
    "exp_var_nocorr_13", "exp_var_nocorr_14", "exp_var_nocorr_15", 
    "exp_var_nocorr_16", "exp_var_nocorr_17", "exp_var_nocorr_2", 
    "exp_var_nocorr_3", "exp_var_nocorr_4", "exp_var_nocorr_5", 
    "exp_var_nocorr_6", "exp_var_nocorr_7", "exp_var_nocorr_8", 
    "exp_var_nocorr_9"), class = "factor")), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", 
"25", "26", "27", "28", "29", "30", "31", "32", "33"))

# data.simulation
df <- smpl[sample(33, 272, replace = TRUE), ]

# list memory allocation
gh <- lapply(1:272, function(x)c("", ""))

# fill-in gh
for (i in 1:272){
  gh[[i]] <-c(df[i, 1],df[i, 2])}

gh[1:5]

Output:

[[1]]
[1] "exp_var_nocorr_1" "exp_var_nocorr_3"

[[2]]
[1] "exp_var_nocorr_10" "exp_var_nocorr_4" 

[[3]]
[1] "exp_var_nocorr_1" "exp_var_nocorr_7"

[[4]]
[1] "exp_var_nocorr_10" "exp_var_nocorr_7" 

[[5]]
[1] "exp_var_nocorr_10" "exp_var_nocorr_9" 
Artem
  • 3,304
  • 3
  • 18
  • 41