[R] Subsetting with a list of vectors
jim holtman
jholtman at gmail.com
Sun May 23 16:12:57 CEST 2010
try this:
> x <- read.table(textConnection("plot plantno. species
+ H 31 ABC
+ D 2 DEF
+ Y 54 GFE
+ E 12 ERF
+ Y 98 FVD
+ H 4 JKU
+ J 7 JFG
+ A 55 EGD"), header=TRUE, as.is=TRUE)
> closeAllConnections()
> # chose 10 groups of 3 sample
> choice <- lapply(1:10, function(.dummy){
+ x[sample(nrow(x),3),]
+ })
>
> choice
[[1]]
plot plantno. species
3 Y 54 GFE
8 A 55 EGD
4 E 12 ERF
[[2]]
plot plantno. species
8 A 55 EGD
2 D 2 DEF
6 H 4 JKU
[[3]]
plot plantno. species
8 A 55 EGD
5 Y 98 FVD
4 E 12 ERF
........
On Sun, May 23, 2010 at 10:00 AM, Kang Min <ngokangmin at gmail.com> wrote:
> Hi,
>
> I have a dataset that looks like the one below.
>
> data
> plot plantno. species
> H 31 ABC
> D 2 DEF
> Y 54 GFE
> E 12 ERF
> Y 98 FVD
> H 4 JKU
> J 7 JFG
> A 55 EGD
> . . .
> . . .
> . . .
>
> I want to select rows belonging to 7 random plots for 100 times.
> (There are 50 plots in total)
> So I created a list of 100 vectors, each vector has 7 elements.
>
> samp <- lapply(1:100, function(i) sample(LETTERS))
> samp2 <- lapply(samp2, "[", 1:7)
>
> How can I select the 26 plots from 'data' using 'samp'?
>
> samp3 <- sample(LETTERS, 7)
> samp4 <- subset(data, plot %in% samp3) # this works
> samp5 <- subset(data, plot %in% samp2[[1]]) # this works as well, but
> I used a for loop to get it to select 7 plots 100 times.
>
> for (i in nrow(samp2)) {
> samp6 <- subset(data, plot %in% samp2[[i]])
> } # this doesn't work
>
>
> Am I missing something, or is there a better solution?
>
> Thanks.
> Kang Min
>
> ______________________________________________
> R-help at 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?
More information about the R-help
mailing list