获得的方差表是排在一列上的,需要整合成发表格式。
options(digits = 4)
var <- read.csv("D:/R/Spatial_Compete/results/che/res/var.csv")
str(var)
## 'data.frame': 140 obs. of 5 variables:
## $ X : Factor w/ 5 levels "block","genetic",..: 3 2 4 3 2 5 4 3 2 5 ...
## $ model : Factor w/ 4 levels "ar","base","spl",..: 2 2 2 3 3 3 3 1 1 1 ...
## $ trait : Factor w/ 9 levels "alfacel","d05",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ Estimated.variances: num 1.336 0.957 1.633 0.58 0.338 ...
## $ S.E. : num 0.1 0.28 0.196 NA NA NA NA 0.044 0.11 0.116 ...
knitr::kable(head(var))
Plot |
base |
h05 |
1.336 |
0.100 |
genetic |
base |
h05 |
0.957 |
0.280 |
Residual |
base |
h05 |
1.633 |
0.196 |
Plot |
spl |
h05 |
0.580 |
NA |
genetic |
spl |
h05 |
0.338 |
NA |
spatial |
spl |
h05 |
5.953 |
NA |
# 性状的个数
trait_name <- levels(var$trait)
var.temp <- matrix(,length(trait_name)*4,12)
for(trait.i in 1: length(trait_name)){
var_trait <- subset(var,trait==trait_name[trait.i])
# 模型的个数
model_name <- levels(factor(var_trait$model))
# 把单个性状内的所有模型结果行放到这个矩阵中,一共4个模型,5个组分5个se,11和12列分别放模型名称和性状名称
var_trait.temp <- matrix(,4,12)
for(model.i in 1:length(model_name)){
var_trait_model <- subset(var_trait,model==model_name[model.i])
# 一个单行空矩阵,把一个性状内一个模型的个组分估计及se放到一行中
var_trait_model.temp <- matrix(,1,dim(var_trait_model)[1]*2)
for(var.i in 1:dim(var_trait_model)[1]){
var_trait_model.temp[1,(2*var.i-1):(2*var.i)] <- var_trait_model[var.i,4]
var_trait_model.temp[1,(2*var.i)] <- var_trait_model[var.i,5]
}
var_trait.temp[model.i,1:dim(var_trait_model.temp)[2]] <- var_trait_model.temp[1,]
# 有的模型没有结果,所以维度报错,这里假设缺失一个模型
if (length(model_name)<4) model_name <- c(model_name,"NA")
var_trait.temp[,11] <- as.matrix(model_name)
var_trait.temp[,12] <-trait_name[trait.i]
}
var.temp[(trait.i*4-3):(trait.i*4),] <- var_trait.temp[1:4,]
}
var.temp <- as.data.frame(var.temp)
# 列名
colnames(var.temp) <- c(rep(c("Est","se"),5),"model","trait")
knitr::kable(head(var.temp))
3.757 |
0.196 |
4.962 |
0.068 |
0 |
0 |
0.183 |
0.003 |
NA |
NA |
ar |
alfacel |
3.757 |
0.383 |
4.962 |
0.263 |
0.183 |
0.075 |
NA |
NA |
NA |
NA |
base |
alfacel |
NA |
NA |
NA |
NA |
NA |
NA |
NA |
NA |
NA |
NA |
spl |
alfacel |
NA |
NA |
NA |
NA |
NA |
NA |
NA |
NA |
NA |
NA |
splar |
alfacel |
0.102 |
0.076 |
0.197 |
0.114 |
1.06 |
0.146 |
4.892 |
0.151 |
NA |
NA |
ar |
d05 |
0.788 |
0.095 |
0.224 |
0.133 |
5.311 |
0.152 |
NA |
NA |
NA |
NA |
base |
d05 |
# 结果保存路径
path_save_res <- "D:/R/Spatial_Compete/results/che/res/"
name_save <- paste(path_save_res, "var_adj.csv",sep="")
# write.csv(var.temp,name_save)