Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 删除因子级别为1的变量_R - Fatal编程技术网

R 删除因子级别为1的变量

R 删除因子级别为1的变量,r,R,我正在为我的数据帧EMGbin使用bnlearn包中的程序gs。数据帧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

我正在为我的数据帧
EMGbin
使用
bnlearn
包中的程序
gs
。数据帧
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)
时,我得到错误:

检查错误。数据(x):所有因素必须至少有两个级别。


当我运行
sapply(EMGbin,nlevels)
时,我看到600000个变量中每个变量的因子级别,其中一些被列为1级。用1个因子级别删除变量会有帮助吗?到目前为止,我知道的唯一方法是
x[,sapply(x,fun)!=1]
,但我不知道用什么来代替
fun

你可以用
nlevels
函数检查因子中的级别数。

使用以下方法:

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

当我使用
nlevels(“A”)
时,返回0。如果我使用
nlevels(“O”)
和所有其他字母
nlevels
采用
因子
参数,则相同。请尝试
nlevels(EMGbin$V105)
nlevels(EMGbin$V105)
返回3。这是否意味着对于
nlevels(EMGbin$COLNAME)
返回1的值,我需要删除该列以使其工作?您已经得到了大部分答案。你想要
x[,sapply(x,fun)!=1]
,你需要用
nlevels
代替
fun