计算目标变量与数据帧中所有列的协方差和相关性

时间:2014-07-27 06:03:47

标签: r dataframe covariance correlation

我已经尝试修复我在计算数据框与目标变量的所有变量(逐个)的协方差和相关性时一次又一次地得到的奇怪错误,但是我得到以下错误: -

> for(i in 1:290)
+ {
+     ins_comb<-subset(InsTrainNumer,!(is.na(InsTrainNumer[,i])))
+     print(nrow(ins_comb))
+     variable<-as.matrix(ins_comb[,i])
+     target<-as.matrix(ins_comb$target)
+     ins_cor[i]<-cor(variable,target = NULL,use="everything")
+     ins_cov[i]<-cov(variable,target = NULL,use="everything")
+     print(ins_cor[i])
+     print(ins_cov[i])
+ } [1] 452061  Show Traceback

重新运行调试

 Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x),  : 
  'data' must be of a vector type, was 'NULL'

捕获的地方在哪里?

1 个答案:

答案 0 :(得分:1)

你逐一前进的策略是非常低效的。只需在整个数据框(或其子集)上使用corcov

> set.seed(1)
> d <- as.data.frame(matrix(rnorm(100), ncol = 5))
> cor(d)
           V1          V2         V3         V4          V5
V1  1.0000000 -0.21752487  0.2976402 -0.1523604 -0.37085773
V2 -0.2175249  1.00000000 -0.2839989  0.1778480 -0.06401162
V3  0.2976402 -0.28399885  1.0000000  0.2180834  0.13805728
V4 -0.1523604  0.17784796  0.2180834  1.0000000 -0.27922504
V5 -0.3708577 -0.06401162  0.1380573 -0.2792250  1.00000000
> cov(d)
           V1          V2         V3         V4          V5
V1  0.8340324 -0.17310141  0.2200998 -0.1461380 -0.30846352
V2 -0.1731014  0.75927736 -0.2003796  0.1627604 -0.05080004
V3  0.2200998 -0.20037960  0.6556520  0.1854637  0.10181248
V4 -0.1461380  0.16276039  0.1854637  1.1030602 -0.26709083
V5 -0.3084635 -0.05080004  0.1018125 -0.2670908  0.82948786

然后,您可以提取出您真正想要的那些相关/协方差矩阵的任何部分。