我已经尝试修复我在计算数据框与目标变量的所有变量(逐个)的协方差和相关性时一次又一次地得到的奇怪错误,但是我得到以下错误: -
> 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'
捕获的地方在哪里?
答案 0 :(得分:1)
你逐一前进的策略是非常低效的。只需在整个数据框(或其子集)上使用cor
和cov
:
> 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
然后,您可以提取出您真正想要的那些相关/协方差矩阵的任何部分。