【问题标题】:Error: x must be atomic for 'sort.list'错误:对于“sort.list”,x 必须是原子的
【发布时间】:2016-04-12 19:35:23
【问题描述】:

这很奇怪。我收到此错误

sort.list(y) 中的错误:对于“sort.list”,“x”必须是原子的
您是否在列表中调用了“排序”?

当我在列表上执行此代码时

 cc3 <- as.data.frame(table(cc2))

可能有什么问题?

这是列表的开头。

head(cc2)   
V1
1:    174
2:    174
3:    211
4: 177106
5: 177106
6: 177106 

编辑: 当我跑步时,str(cc2) 我明白了

Classes ‘data.table’ and 'data.frame':  149706 obs. of  1 variable:
$ V1:List of 149706
..$ : Named chr "174"
.. ..- attr(*, "names")= chr "V11"
..$ : Named chr "174"
 .. ..- attr(*, "names")= chr "V7"
 ..$ : Named chr "211"
  .. ..- attr(*, "names")= chr "V6"
 .. [list output truncated]
 - attr(*, ".internal.selfref")=<externalptr> 

【问题讨论】:

  • 每次看到这样的错误,我就知道要么是我不了解数据结构,要么是不了解函数需要什么类型的数据结构。

标签: r


【解决方案1】:

str(cc2) 的输出来看,data.table 内部的变量 V1 本身就是一个列表。这意味着 cc2 是一个长度为 1 的嵌套列表。发生错误是因为 table 调用 sort.list,这需要一个原子向量作为输入。

尝试使用unlist

cc3 <- as.data.frame(table(unlist(cc2)))

unlist 将(递归地)从它们的列表容器中提取元素。所以unlist(cc2) 将返回一个向量,它直接与table 一起工作。

【讨论】:

    【解决方案2】:

    我通过取消列出 cc2 unli &lt;- unlist(cc2) 解决了这个问题,然后将其转换为 df df&lt;-as.data.frame(cc2)

    【讨论】:

      【解决方案3】:

      我只需要 unlist(myList) 用于我通过迭代构建的列表我通过索引 (myList[[i]]

      【讨论】:

        猜你喜欢
        • 2018-01-28
        • 2017-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-15
        • 2018-12-04
        • 1970-01-01
        • 2014-07-27
        相关资源
        最近更新 更多