【问题标题】:Problem converting a Matrix to Data Frame in R (R thinks all numeric types are factors)在 R 中将矩阵转换为数据框的问题(R 认为所有数字类型都是因子)
【发布时间】:2011-03-21 07:44:21
【问题描述】:

我通过 COM 接口将数据从 C# 传递到 R。当数据到达 R 时,它被存放在一个“矩阵”中。我使用的一些函数要求数据位于“DataFrame”内。我使用

转换数据结构
newDataFrame <- as.data.frame(oldMatrix)

数据表可以很好地到达 R,但是一旦我转换到 DataFrame,它假定我所有的数字数据都是因子!

所以它变成:{34, 46, 90, 54, 69, 54} 变成 {1, 2, 3, 4, 5, 4}

不过,我的数据表确实有因素,所以我不能强迫整个事情都是数字的。有没有办法解决?注意:我无法将数据作为 CSV 导出到文件系统并手动将其读入 R。

附带说明,我正在使用的需要 DataFrame 的功能是使用 'Hmisc' 包

hist.data.frame(dataFrame)

这会为 DataFram 中的每一列数据生成一个频率直方图,并将它们全部排列成网格模式(非常漂亮)!

谢谢! -戴夫

【问题讨论】:

    标签: data-structures r matrix type-conversion dataframe


    【解决方案1】:

    我认为您误诊了问题 - 矩阵中的所有列必须属于同一类型,因此这很可能是问题出现的地方,而不是转换为数据框。

    【讨论】:

      【解决方案2】:

      我以前遇到过这个问题。读取数据时需要设置stringAsFactors=F。

      现在,您可以将单个变量/列转换为因子(即,使用 as.numeric() 等),而不必担心如何处理数字。

      【讨论】:

      • 这成功了!但是有没有一种方法可以以编程方式处理数字列和向量列,我正在处理大量数据,并且手动分析类似的东西是不切实际的。
      • 也许吧。你有区分数值变量和因子变量的简单方法吗?
      • 如果变量包含字母,它将成为一个因素,否则我猜它应该被视为数字。我的问题出现是因为 R 将我的数值变量检测为字符串,不能将其视为因子。
      • 好吧,我不确定您的数据的确切格式,但我会尝试创建一些基于 is.character() 的函数并检查每个变量并相应地转换它。查看 apply 系列及其表亲(lapply、tapply 等),了解像这样在 R 中循环的好方法。
      • 也找到了这个lib.stat.cmu.edu/S/Harrell/help/Hmisc/html/all.is.numeric.html 感谢您的所有输入!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2012-05-20
      • 1970-01-01
      相关资源
      最近更新 更多