为什么我会得到一个错误,无法在R中创建更多2 ^ 31个元素的表

时间:2015-02-25 13:54:54

标签: r

你好我在8个obs 60变量的R中有一个数据帧记录,缺失值被NA替换,其他值是单词。

当我尝试将数据框列表为feeds<-table(record)时,我收到错误消息:

Error in table(record) : attempt to make a table with >= 2^31 elements

我的数据框的一些示例元素/结构是

INC - CORP Application Issue    INC - CORP Issue    INC - PC Software Issue
Affected User                   Affected User       Affected User
Attachment                      Attachment          Attachment
Description / Priority          Business Critica..  Configuration Item
Knowledge Search                Client ID           Contact Info
NA                              Description / Pr..  NA                      

我不理解错误,因为数据框中的元素显然甚至不接近2 ^ 31。

感谢您的时间。

5 个答案:

答案 0 :(得分:3)

它的旧主题,但它可能会帮助其他人,因为我发布它。 我遇到了同样的问题,我从某个地方发现了它的在线解决方案,我不记得了,它对我来说非常有用。 希望能为需要的人服务。

solution<-as.data.frame(table(unlist(record)))

答案 1 :(得分:2)

您当前的代码正在尝试制作60维表,返回60个变量的每个唯一组合的计数。因此&gt; 2 ^ 31个元素错误。

您是否希望sapply(record, table)单独列出每个变量?

答案 2 :(得分:0)

主要问题是数据框中的复杂程度。有两种方法可以解决这个问题:

  1. 在对data.frame进行子集化后调用droplevels。例如:

    feed&lt; - droplevels(record)

  2. 使用apply家庭功能,例如前面提到的sapply人。例如:

    feeds&lt; - apply(record,1,table)#output作为对象存储 馈送

  3. 祝你好运。

答案 3 :(得分:0)

我有同样的问题。对我有用的是删除像这样的NA

df <- df[!is.na(df)]

答案 4 :(得分:0)

我也遇到了这个问题。对我有用的是使用以下几行将数据框中的每一列转换为数字或字符:

df$x = as.numeric(as.character(df$x))
df$y = as.numeric(as.character(df$y))
df$z= as.numeric(as.character(df$z))

这将删除数据框中每个变量的因子水平。如果您需要因子水平,我不建议您这样做,但是如果您只需要原始值,它将很好地工作。