6

我正在为我的数据框使用包gs中的程序。数据框包含从 A 到 Z 的所有因素。有 600000 列和 130 行。这是一个示例:bnlearnEMGbinEMGbinEMGbinEMGbin

   V101  V102  V103  V104  V105  V106
 1    L     M     D     S     O     O
 2    L     M     C     P     A     O
 3    J     M     C     O     O     O
 4    L     N     D     R     A     O
 5    K     M     D     O     A     O
 6    K     M     C     P     O     O
 7    K     N     D     Q     O     O
 8    L     N     D     R     O     O
 9    L     M     D     O     O     O
10    K     M     D     S     A     O

当我运行程序gs(EMGbin)时,我收到错误:

Error in check.data(x) : all factors must have at least two levels.

当我运行时sapply(EMGbin, nlevels),我看到了 600,000 个变量中每个变量的水平,并且我看到其中一些被列为 1 级。删除具有 1 个因子水平的变量会有所帮助吗?到目前为止,我知道如何做到这一点的唯一方法是x[, sapply(x, fun) != 1],但我不知道用什么来代替fun

4

2 回答 2

9

用这个:

x[, sapply(x, nlevels) > 1]
于 2013-08-01T13:37:30.397 回答
2

您可以使用该nlevels功能检查因子中的水平数。

于 2013-08-01T13:20:57.010 回答