R 循环缺失值 TRUE/FALSE 需要

R loop missing value where TRUE/FALSE needed

我在 R 中有这段代码:

j <- 1
k <- nrow(group_IDs)

  while (j <= k)
        {   
            d_clust <- Mclust(Customers_Attibutes_s[which    (Customers_Attibutes_s$Group_ID == group_IDs$Group_ID[j]),3:7], G=2:7)
            temp <- cbind(Customers_Attibutes[which        (Customers_Attibutes$Group_ID == group_IDs$Group_ID[j]),], as.data.frame    (predict.Mclust(d_clust, Customers_Attibutes[which(Customers_Attibutes$Group_ID     == group_IDs$Group_ID[j]), 3:7]))[1])
            temp_ <- rbind(temp,temp_)
            j <- j+1
        }
while 语句中的

j <= k 返回此错误:

missing value where TRUE/FALSE needed.

group_IDs 不为空,在这种情况下它实际上包含值 8。 貌似进入循环,第二轮就崩溃了

由于 group_ IDs 是向量,请尝试 length(group_IDs) 而不是 nrow。向量没有行,所以等价于 length.

这是我怀疑正在发生的事情:

> group_IDs <- 8
> nrow(group_IDs)
NULL

您可以使用 for 解决索引问题,例如:

for (ID in group_IDs) {}

当然,这假设 group_IDs 是一个值向量。

注意:您的代码在循环 group_IDs$Group_ID[j] 中显示了以下内容,这意味着向量以外的内容;也许你的意思是 group_IDs[j]?