我遇到了一个奇怪的循环结果问题,与手动输入的结果不同。我需要计算数据集中一组变量的级别数。所以我编写了一个代码,将变量转换为一个因子,计算级别数并将其设置为数字。这很好用。但是当我将它循环到所有变量时,它表示每个变量都有1个级别。 这发生在我使用的数据集和我在下面创建的样本数据上。它也发生在我编写一个函数并在apply中使用而不是for循环时。循环肯定是错的,但是我被卡住了。 有什么想法吗?
以下是样本数据,包含三个变量(X,Y,Z)的数据帧,18个观察值。
out
所以我计算每个变量的级别数 -
X <- rep(c(1,2,3), 6)
Y <- rep(c(1,2), 9)
Z <- rep(c(1,2,3,4,5,6), 3)
XYZ_df <- as.data.frame(cbind(X,Y,Z))
结果是right-levelsX为3,levelsY为2,levelZ为6。
但是当我循环它时,它会改变。我创建了一个带有变量值的向量,然后将其输入到for循环中,将XYZ_df $前缀粘贴到循环条目 -
levelsX <- as.numeric(nlevels(as.factor(XYZ_df$X)))
levelsY <- as.numeric(nlevels(as.factor(XYZ_df$Y)))
levelsZ <- as.numeric(nlevels(as.factor(XYZ_df$Z)))
当我这样做时,每个变量的级别条目是1.
正如我所说,这发生在两个数据集中,所以我知道它是我的代码。它也适用于申请。它发生在我上面的方式(将XYZ_df粘贴到变量名称)和当我使用attach(XYZ_df)并且刚输入变量名时。