数据帧由因子与实数组成

时间:2013-07-24 01:40:57

标签: r

我正在使用BNlearn软件包,运行测试时出现的错误是Error in check.data(x) : variables must be either all real numbers or all factors.。我的数据框EMG包含两种类型的数值:

1)~30000列值,其中许多是小数(我相信这些都被解释为实数)。

2)~450000列的值为0,1或2.(我相信这些被解释为因子)。

我如何让R相信第2类中的值是实数,而不是因子。另外,我可能会以错误的方式接近错误。

数据由129行组成。下面是一个数据示例。

9.758314     8.290852     0.03077250   0.353504     2        1
9.640181     8.581444     0.02144100   0.381118     0        0
8.898238     8.441256     0.01640670   0.574626     0        0
9.784328     8.406762     0.01525690   0.553795     1        1
11.017669    9.101037     0.01828330   0.489020     1        1
9.400396     8.073811     0.01897480   0.513596     0        0

在这个例子中,我相信前4列被解释为实数,而最后两列被解释为因子。

当我输入我正在使用的函数(gs,BNlearn包的一部分)到R时,这就是我得到的:

function (x, cluster = NULL, whitelist = NULL, blacklist = NULL, 
    test = NULL, alpha = 0.05, B = NULL, debug = FALSE, optimized = TRUE, 
    strict = FALSE, undirected = FALSE) 
{
    bnlearn(x = x, cluster = cluster, whitelist = whitelist, 
        blacklist = blacklist, test = test, alpha = alpha, B = B, 
        debug = debug, optimized = optimized, strict = strict, 
        undirected = undirected)
}
<environment: namespace:bnlearn>

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以这样做:

  matrix(as.numeric(as.matrix(EMG)),ncol=ncol(EMG),byrow=TRUE)

as.matrix将返回一个字符矩阵,as.numeric一个数字向量,matrix将恢复原始结构。