Error: x must be atomic for 'sort.list'

匿名 (未验证) 提交于 2019-12-03 02:16:02

问题:

This is weird. I get this error

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

when I execute this code on a list

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

What could possibly be wrong?

this is a head of the list.

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

Edit: When I run, str(cc2) I get this

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>  

回答1:

From the output of str(cc2), the variable inside of the data.table, V1, is itself a list. This means that cc2 is a nested list of length 1. The error is occurring because table calls sort.list, which requires an atomic vector as input.

Try using unlist:

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

unlist will (recursively) extract elements from their list containers. So unlist(cc2) will return a vector, which works directly with table.



回答2:

I solved it by unlisting cc2 unli <- unlist(cc2) then converted it to df df<-as.data.frame(cc2)



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!