0

我正在使用 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>

谢谢!

4

1 回答 1

1

你可以这样做:

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

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

于 2013-07-24T01:53:04.833 回答