无法将因子转换为数字。
原因:原始代码中的问题在于将一个数据框(Bdata[,5:50])转换为一个数值向量。实际上,想要的是将每一列转换为数值向量。lapply()函数将传递的函数应用于列表的每个元素(数据框实际上是一个特殊的列表),并返回一个列表。因此需要将其再次转换为数据框。
解决方法:将原始代码修改为使用lapply()函数将每一列转换为数值向量的方法。
代码如下:
Bdata[,5:50] <- as.data.frame(lapply(Bdata[,5:50], function(x) as.numeric(as.character(x))))
简化后的代码如下:
Bdata[5:50] <- lapply(Bdata[5:50], function(x) as.numeric(as.character(x)))