在没有包的情况下创建多个比较

时间:2016-03-16 14:00:13

标签: r

我想在R中使用编程方法创建多个比较。这在完整的因子设计中就像我使用gen.factorial()函数AlgDesign包时一样。有人能告诉我如何从我的代码中创建它,因为我不能直接使用gen.factorial()函数,因为在我的实际数据中我有不平衡的数据。

因子

treat <- gl(4, 15, labels = paste("t", 1:4, sep="")); treat

变量

set.sed(125)
sp  <- cbind(c(rnorm(10,  5, 0.25), rnorm(50, 2.5, 0.25)), rnorm(60, 2.5, 0.25),
             c(rnorm(10, 12, 0.25), rnorm(50, 2.5, 0.25)), rnorm(60, 2.5, 0.25))
colnames(sp) <- c("sp1", "sp2", "sp3", "sp4")

比较

TI    <- model.matrix(~ treat-1)
head(TI)

f <- nlevels(treat)
comb <- t(combn(1:f, 2))
n    <- nrow(comb)

contr2 <- NULL
for (x in 1:n) {
      i <- comb[x, 1]
      j <- comb[x, 2]
      tmp <- list(TI[,i] - TI[,j]); names(tmp) <- paste0("TI",i, "_", j)
       contr2 <- c(contr2, tmp) }
contr2df <- as.data.frame(contr2)
contr2df# OK  but incomplete

等效,但创建完整的因子设计

require(AlgDesign)
contr2df2 <-AlgDesign::gen.factorial(3, 6, TRUE, varNames=c("TI1_2", "TI1_3", "TI1_4", "TI2_3", "TI2_4", "TI3_4"))
contr2df2

谢谢, 亚历山大

0 个答案:

没有答案