删除因子级别为1的变量

时间:2013-08-01 13:18:20

标签: r

我正在使用gs包中的bnlearn程序作为我的数据框EMGbin。数据框EMGbin包含所有因素,范围从A到Z. EMGbin包含600000列和130行。以下是EMGbin的示例:

   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的内容。

2 个答案:

答案 0 :(得分:7)

使用此:

x[, sapply(x, nlevels) > 1]

答案 1 :(得分:2)

您可以使用nlevels功能检查因子中的级别数。