Looping with looping

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Looping with looping

ani jaya
Dear R community,

I'm trying to create a looping to see the effect of number of samples from
one dataset.
Lets say I have 10 values in a single data frame and I want to see the mean
of each sampling let say from 2-9 number of sampling. But I want to do the
repetition let say up to 100 for each number of sampling and put it in a
different dataframe, let say a2,a3,a4,... which contain a2[1] is the mean
of first repetition and so on. I believe this is possible but I'm newbie
here.

> version

platform       x86_64-w64-mingw32
arch           x86_64
os             mingw32
system         x86_64, mingw32
status
major          3
minor          5.3
year           2019
month          03
day            11
svn rev        76217
language       R
version.string R version 3.5.3 (2019-03-11)
nickname       Great Truth


 The simple code that I have:

sam<-c(9,7,8,6,6,7,8,6,7,3)
for (k in seq(2,9,1)){
    a <- numeric(100)
      for (i in 1:100){
      a[i] <- mean(sample(sam,k,replace=T))

      }
  }

I can do enough with this code but i want to the variable name also
move based on k.

I have googling enough and meet assign and paste command but not really help.
Any help would be appreciate.



Best,

Saat M.

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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 | Threaded
Open this post in threaded view
|

Re: Looping with looping

glsnow
When the goal of looping is to compute something and save each
iteration into a vector or list, then it is usually easier to use the
lapply/sapply/replicate functions and save the result into a single
list rather than a bunch of global variables.

Here is a quick example that does the same computations as your code,
but save the results into a list where each element is a vector of
length 100:

sam<-c(9,7,8,6,6,7,8,6,7,3)
a <- lapply(2:9, function(k){
  replicate(100, mean(sample(sam, k, replace=TRUE)))
})

# optional
names(a) <- sprintf("a%i", 2:9)

hist(a[["a2"]]
hist(a$a9)
w <- "a5"
hist(a[[w]])


Saving everything into a single list (or matrix/array/etc.) makes it
easier to loop over all of the results later on (and prevents the hard
to track down bugs from using dynamically named global variables).
Here is an example based on the results from above:

par(mfrow=c(3,3))
for(i in seq_along(a)) {
  hist(a[[i]], xlab='x', main=sprintf("k = %i", (2:9)[i]))
}





On Thu, Apr 18, 2019 at 9:19 AM ani jaya <[hidden email]> wrote:

>
> Dear R community,
>
> I'm trying to create a looping to see the effect of number of samples from
> one dataset.
> Lets say I have 10 values in a single data frame and I want to see the mean
> of each sampling let say from 2-9 number of sampling. But I want to do the
> repetition let say up to 100 for each number of sampling and put it in a
> different dataframe, let say a2,a3,a4,... which contain a2[1] is the mean
> of first repetition and so on. I believe this is possible but I'm newbie
> here.
>
> > version
>
> platform       x86_64-w64-mingw32
> arch           x86_64
> os             mingw32
> system         x86_64, mingw32
> status
> major          3
> minor          5.3
> year           2019
> month          03
> day            11
> svn rev        76217
> language       R
> version.string R version 3.5.3 (2019-03-11)
> nickname       Great Truth
>
>
>  The simple code that I have:
>
> sam<-c(9,7,8,6,6,7,8,6,7,3)
> for (k in seq(2,9,1)){
>     a <- numeric(100)
>       for (i in 1:100){
>       a[i] <- mean(sample(sam,k,replace=T))
>
>       }
>   }
>
> I can do enough with this code but i want to the variable name also
> move based on k.
>
> I have googling enough and meet assign and paste command but not really help.
> Any help would be appreciate.
>
>
>
> Best,
>
> Saat M.
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> 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.



--
Gregory (Greg) L. Snow Ph.D.
[hidden email]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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 | Threaded
Open this post in threaded view
|

Re: Looping with looping

ani jaya
Thank you very much, Dr. Snow, your suggestion helps a lot.

Best,
Saat

On Fri, Apr 19, 2019 at 4:14 AM Greg Snow <[hidden email]> wrote:

> When the goal of looping is to compute something and save each
> iteration into a vector or list, then it is usually easier to use the
> lapply/sapply/replicate functions and save the result into a single
> list rather than a bunch of global variables.
>
> Here is a quick example that does the same computations as your code,
> but save the results into a list where each element is a vector of
> length 100:
>
> sam<-c(9,7,8,6,6,7,8,6,7,3)
> a <- lapply(2:9, function(k){
>   replicate(100, mean(sample(sam, k, replace=TRUE)))
> })
>
> # optional
> names(a) <- sprintf("a%i", 2:9)
>
> hist(a[["a2"]]
> hist(a$a9)
> w <- "a5"
> hist(a[[w]])
>
>
> Saving everything into a single list (or matrix/array/etc.) makes it
> easier to loop over all of the results later on (and prevents the hard
> to track down bugs from using dynamically named global variables).
> Here is an example based on the results from above:
>
> par(mfrow=c(3,3))
> for(i in seq_along(a)) {
>   hist(a[[i]], xlab='x', main=sprintf("k = %i", (2:9)[i]))
> }
>
>
>
>
>
> On Thu, Apr 18, 2019 at 9:19 AM ani jaya <[hidden email]> wrote:
> >
> > Dear R community,
> >
> > I'm trying to create a looping to see the effect of number of samples
> from
> > one dataset.
> > Lets say I have 10 values in a single data frame and I want to see the
> mean
> > of each sampling let say from 2-9 number of sampling. But I want to do
> the
> > repetition let say up to 100 for each number of sampling and put it in a
> > different dataframe, let say a2,a3,a4,... which contain a2[1] is the mean
> > of first repetition and so on. I believe this is possible but I'm newbie
> > here.
> >
> > > version
> >
> > platform       x86_64-w64-mingw32
> > arch           x86_64
> > os             mingw32
> > system         x86_64, mingw32
> > status
> > major          3
> > minor          5.3
> > year           2019
> > month          03
> > day            11
> > svn rev        76217
> > language       R
> > version.string R version 3.5.3 (2019-03-11)
> > nickname       Great Truth
> >
> >
> >  The simple code that I have:
> >
> > sam<-c(9,7,8,6,6,7,8,6,7,3)
> > for (k in seq(2,9,1)){
> >     a <- numeric(100)
> >       for (i in 1:100){
> >       a[i] <- mean(sample(sam,k,replace=T))
> >
> >       }
> >   }
> >
> > I can do enough with this code but i want to the variable name also
> > move based on k.
> >
> > I have googling enough and meet assign and paste command but not really
> help.
> > Any help would be appreciate.
> >
> >
> >
> > Best,
> >
> > Saat M.
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> > 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.
>
>
>
> --
> Gregory (Greg) L. Snow Ph.D.
> [hidden email]
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.