R function for manipulative field experiment design - Plant ecology
我是一名植物生态学家,我想设计一个野外操作实验。为了在实验plot内的植物配置中实现良好程度的随机化,我想使用 R(我很熟悉)。
图片是设计的示意图:总共将有 6 个plot,每个plot包含 24 种不同的植物。我总共有 36 种植物,我想从每个plot中随机抽取 24 种植物(plot之间的差异很大)。每个物种应出现在 6 个plot中的 4 个,但位置不同,沿边界两次(两种暖色)和两次在核心区域(每种冷色一次);在图片中,我使用 4 个不同的物种(A、B、C、D)直观地解释了我的意思。
谁能建议一种方法或一些见解来编写函数?
我从这个线程和这个线程中借鉴了一些见解。基本上,您制作一个圆形矩阵并混洗组。
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 34 35 36 37 38 39 40 41 42 43 | coords <- list(c(1,1),c(1,2),c(2,1),c(3,1), c(1,3),c(1,4),c(2,4),c(3,4), c(2,2),c(3,2),c(2,3),c(3,3), c(4,1),c(5,1),c(6,1),c(6,2), c(4,2),c(5,2),c(4,3),c(5,3), c(4,4),c(5,4),c(6,3),c(6,4)) Matrix <- matrix(c(LETTERS,0:9)[1:36][matrix(1:36,36+1,36+1,byrow=T)[c(1,36:2),1:36]],36,36) PlotLayouts <- Matrix[(1:6*6),1:24][,unlist(lapply(split(1:24,rep(1:6,each=4)),sample,4))] PlotLayouts <- split(PlotLayouts,sample(1:6,6)) Result <- lapply(PlotLayouts,function(Vector){ Layout <- matrix(NA,nrow=6,ncol=4) for(i in 1:24){ Layout[coords[[i]][1],coords[[i]][2]] <- Vector[i] } Layout }) #Species Counts table(unlist(Result)) 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Result $`1` [,1] [,2] [,3] [,4] [1,]"I" "H" "M" "L" [2,]"K" "R" "S" "N" [3,]"J" "P" "Q" "O" [4,]"U" "Z" "0" "2" [5,]"V" "Y" "X" "1" [6,]"T" "W" "4" "3" $`2` [,1] [,2] [,3] [,4] [1,]"0" "Z" "4" "3" [2,]"2" "9" "A" "5" [3,]"1" "7" "8" "6" [4,]"C" "H" "I" "K" [5,]"D" "G" "F" "J" [6,]"B" "E" "M" "L" ... |