Dear R users,

I would like to accumulate objects generated from 'for' loop to a list or
array.

To illustrate the problem, arbitrary data set and script is shown below,


x <- data.frame(a = c(rep("n",3),rep("y",2),rep("n",3),rep("y",2)), b =
c(rep("y",2),rep("n",4),rep("y",3),"n"), c = c(rep("n",7),rep("y",3)), d =
c("y", rep("n",4), rep("y",2), rep("n",3)))

for (i in 1:(dim(x)[2]))  {
         assign(paste("ind", i, sep = ""), which(x[ , i] == "y"))
          accum <- c(ind1, ind2, ind3, ind4)
}

> ind1
[1]  4  5  9 10
> ind2
[1] 1 2 7 8 9
> ind3
[1]  8  9 10
> ind4
[1] 1 6 7
> accum
 [1]  4  5  9 10  1  2  7  8  9  8  9 10  1  6  7

Are there any alternative method where the highlighted statement above can
be represented without typing individual objects manually? (as it can be
very tedious with large number of objects; i.e ind1, ind2, ....., ind100)

Also, is there any way to extract individual objects ('ind1' etc) from
'accum'?

> accum[1:length(ind1)]
[1]  4  5  9 10
gives 'ind1', but this may become messy for other objects (like 'ind10')


Highly appreciate for sharing your expertise in solving this problem.

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to