如何将数字列转换为R中的因子

我正在尝试使用softImpute命令(来自softImpute包)来填充缺失值,并且我试图在使用softImpute之前将大数据帧中的分类变量转换为因子类型.

我使用了as.factor命令和factor命令,但它们都产生了以下结果

train[a]=factor(train[a])

Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

这里是一个矢量,如:c(1:92)

我也试过as.character但是softImpute命令不会将变量识别为字符并将它们视为数字,从而产生分类/指示变量的十进制值.

最佳答案 尝试:

train[[a]]=factor(train[[a]])

当然,这确实假设a是具有1:length(train)范围内的数值的对象,或者是名称(train)向量中的值之一.如果使用“[”引用数据框,则会得到一个列表,其中一个元素恰好是您希望“分解”的向量,但它实际上不是一个向量,而是一个单元素列表. “[[”函数只为您提供向量.

点赞