我正在使用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>
谢谢!
答案 0 :(得分:1)
您可以这样做:
matrix(as.numeric(as.matrix(EMG)),ncol=ncol(EMG),byrow=TRUE)
as.matrix
将返回一个字符矩阵,as.numeric
一个数字向量,matrix
将恢复原始结构。