[英]for loop in R to get a table
我们正在研究我们的论文。 我们想制作一个表格,其中包含一个区域在不同时间段内的相关性和等级相关性的均值、最大值和最小值。 但结果只为我们提供了最后一个时间段的正确数字。 代码中的EC1是不同时间段的返回,在xts中。
EC_correlation_table <- matrix(nrow=10,ncol=3,byrow=T)
colnames(EC_correlation_table) <-c("Avg","Max","Min")
rownames(EC_correlation_table) <- rep(c("ρ","ρs"),times=5)
for (a in c("EC1","EC2","EC3","EC4","EC5") ){
for (i in seq(1,10,2)) {
EC_correlation_table[i,1]<-mean(cor(get(a)))
n <- length(cor(get(a)))
EC_correlation_table[i,2]<-sort(cor(get(a)))[n-length(colnames(EC))]
EC_correlation_table[i,3]<-min(cor(get(a)))
EC_correlation_table[i+1,1]<-mean(cor(get(a),method = "spearman"))
n <- length(cor(get(a),method = "spearman"))
EC_correlation_table[i+1,2]<-sort(cor(get(a),method = "spearman"))[n-length(colnames(EC))]
EC_correlation_table[i+1,3]<-min(cor(get(a),method = "spearman"))
}
}
这是我们得到的结果,但显然,它只是在最后一个时期重复正确的数字。
> EC_correlation_table
Avg Max Min
ρ 0.8326252 0.9310787 0.6795128
ρs 0.7920609 0.9139772 0.5997149
ρ 0.8326252 0.9310787 0.6795128
ρs 0.7920609 0.9139772 0.5997149
ρ 0.8326252 0.9310787 0.6795128
ρs 0.7920609 0.9139772 0.5997149
ρ 0.8326252 0.9310787 0.6795128
ρs 0.7920609 0.9139772 0.5997149
ρ 0.8326252 0.9310787 0.6795128
ρs 0.7920609 0.9139772 0.5997149
我认为我们在某些时候犯了一个小错误,但就是想不通。
想了一晚上,终于找到了解决办法~
for (i in 1:5) {
for (a in sort(c("EC1","EC2","EC3","EC4","EC5"))[i] ){
b<- 1+seq(0,8,2)[i]
EC_correlation_table[b,1]<-mean(cor(get(a)))
n <- length(cor(get(a)))
EC_correlation_table[b,2]<-sort(cor(get(a)))[n-length(colnames(EC))]
EC_correlation_table[b,3]<-min(cor(get(a)))
c<- 1+seq(1,9,2)[i]
EC_correlation_table[c,1]<-mean(cor(get(a),method = "spearman"))
n <- length(cor(get(a),method = "spearman"))
EC_correlation_table[c,2]<-sort(cor(get(a),method = "spearman"))[n-length(colnames(EC))]
EC_correlation_table[c,3]<-min(cor(get(a),method = "spearman"))
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.