Функция R для проектирования экспериментальных полевых экспериментов - Экология растений - PullRequest
0 голосов
/ 26 марта 2020

Я - эколог растений, и я хотел бы провести эксперимент с полевыми манипуляциями. Чтобы добиться хорошей степени рандомизации при расположении растений на экспериментальных участках, я хотел бы использовать R (с которой я знаком).

На рисунке приведена схема проекта: всего быть 6 участков, каждый из которых содержит 24 различных видов растений. Всего у меня 36 видов растений, из которых я хотел бы случайным образом отобрать 24 вида на участок (с большим разбросом между участками). Каждый вид должен присутствовать на 4 из 6 участков, но в разных положениях, дважды вдоль границы (в двух теплых цветах) и дважды в области ядра (один раз для холодного цвета); на рисунке я наглядно объясняю, что я имею в виду, используя 4 различных вида (A, B, C, D).

Может ли кто-нибудь предложить способ сделать это или какое-то понимание, чтобы написать функцию?

Plot design

1 Ответ

0 голосов
/ 26 марта 2020

Я позаимствовал некоторые идеи у этой темы и этой темы . По сути, вы делаете круговую матрицу и перемешиваете группы.

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" 
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...