如何修复'mvnX(数据=数据,先验=先验):数据必须是一维的'R错误

时间:2019-04-25 11:03:17

标签: r for-loop

我正在尝试用R编写代码,在一个包含11750个点和三列的巨大数据集中,我将一次考虑500个点,计算分布的均值和协方差矩阵,并使用它绘制图椭圆形。为此,我编写了一个for循环,其中以500的步长考虑了所有点。在循环内,我尝试使用Mclust函数获取数据摘要。但是,执行数据之后且执行Mclust之前,会发生以下错误:

mvnX中的错误(数据=数据,优先级=优先级):数据必须是一维的

最初,我打算使用以下代码删除异常值:

 Data <- read.csv("CombinedDataset.csv", header = TRUE, sep = ",")
 dat = Data[2:5000,3:5]
 library(MVN)
 M = mvn(dat, mvnTest="hz", multivariateOutlierMethod = "quan", showNewData = TRUE)
 Comb_Data = M$newData
 Comb_Data$D <- (max(Comb_Data$D) - Comb_Data$D)/(max(Comb_Data$D) - min(Comb_Data$D))
 Comb_Data$R <- (max(Comb_Data$R) - Comb_Data$R)/(max(Comb_Data$R) - min(Comb_Data$CCR))
 Comb_Data$A <- (max(Comb_Data$A) - Comb_Data$A)/(max(Comb_Data$A) - min(Comb_Data$A))

由于它消除了某些异常点,因此我认为数据的不规则性阻碍了for循环。因此,我尝试不移除异常值,但是并没有消除错误

这是不删除异常的for循环的代码:

   Data2 <- read.csv("CombinedDataset.csv", header = TRUE, sep = ",")
   dat2 = Data[2:11750,3:5]

   Comb_Data2 = dat2

   Comb_Data2$D <- (max(Comb_Data2$D) - Comb_Data2$D)/(max(Comb_Data2$D) - min(Comb_Data2$D))
   Comb_Data2$R <- (max(Comb_Data2$R) - Comb_Data2$R)/(max(Comb_Data2$R) - min(Comb_Data2$R))
   Comb_Data2$A <- (max(Comb_Data2$A) - Comb_Data2$A)/(max(Comb_Data2$A) - min(Comb_Data2$A))

   library(mclust)

   for (Comb_Data2 in seq(2,11750,500)) {

      Data1_2 <- Mclust(Comb_Data2)

      summary(Data1_2)

   }

在此问题上的任何帮助将不胜感激。

0 个答案:

没有答案