我正在将 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

最佳答案

用这个:

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

关于删除因子水平为 1 的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17995195/

10-12 22:39