【问题标题】:how to convert numeric column to factor in R如何将数字列转换为R中的因子
【发布时间】:2013-12-02 05:59:39
【问题描述】:

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

我使用过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?

a 这是一个向量,如:c(1:92)

我也尝试了as.character,但softImpute 命令无法将变量识别为字符并将它们视为数字,从而导致分类/指示变量的十进制值。

【问题讨论】:

  • 你在寻找这样的东西吗:x
  • 不,我正在尝试将数据框“train”中的第 1 列到第 92 列转换为因子,因为它们是分类变量。
  • 你写的完整代码是什么?

标签: r numeric r-factor


【解决方案1】:

试试:

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

当然,这确实假设,a 是一个对象,其数值要么在1:length(train) 范围内,要么是names(train) 向量中的值之一。如果您使用“[”引用数据框,您将得到一个包含一个元素的列表,该列表恰好是您希望“分解”的向量,但它并不是真正的向量,而是一个元素列表。 "[[" 函数只为您提供向量。

【讨论】:

  • 我收到以下错误:.subset2(x, i, exact = exact) 中的错误:递归索引在级别 2 失败。
  • a 是范围内的数值。 a 的结构是整数,a 是特定数字的向量。我正在尝试选择训练数据框中的第 i 个、第 j 个等列并将它们转换为因子。
  • 所以您希望将单个元素列为因子?我的理解正确吗?
  • 是的。我搜索了该站点并使用了 train[,a]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2015-10-15
相关资源
最近更新 更多