I have following type of data
ntrt = paste ("EL", 1:4, sep= "")
repl = 3
I want to sample from the ntrt, but 3 times (rep =3), output something like below:
nsam <- c(sample(ntrt),sample(ntrt), sample(ntrt))
repl <- rep (1:3, each = length (ntrt))
newd <- data.frame (nsam, repl)
newd
nsam repl
1 EL3 1
2 EL1 1
3 EL4 1
4 EL2 1
5 EL2 2
6 EL4 2
7 EL1 2
8 EL3 2
9 EL1 3
10 EL3 3
11 EL4 3
12 EL2 3
Here is my trial to loop:
nsam <- rep (NULL, ntrt)
for (i in 1:rep){
nsam[i] <- sample(ntrt)
}
Edits: just clarification
ntrt
[1] "EL1" "EL2" "EL3" "EL4"
> sample(ntrt,4)
[1] "EL4" "EL3" "EL2" "EL1"
# is equal to:
sample(ntrt)
but what I need:
c(sample(ntrt), sample(ntrt), sample(ntrt))
[1] "EL4" "EL3" "EL1" "EL2" "EL1" "EL2" "EL3" "EL4" "EL3" "EL1" "EL2" "EL4"
which is equal to
c(sample(ntrt,4), sample(ntrt,4), sample(ntrt,4))

Thus the process is:
# for repl = 1
sample from ntrt size = length(ntrt)
# repeat the same process again
# for repl = 2
sample from ntrt size = length(ntrt)
# note: I only concerned with order of names within ntrt (randomization process)
# repeat the same process again
# for repl = 3
sample from ntrt size = length(ntrt)
same process for n levels of repl
I am getting error, sorry for a simple question
Try using
lapply:Update
I noticed that @joran had already recommended
replicatein a comment. Here’s the replicate approach: