如何在 r 中修复:sort.int(x, na.last, 降序, …) 中的错误:'x' 必须是原子的
使用 R 时可能遇到的错误消息是:
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...): 'x' must be atomic
当您尝试对列表进行排序时会出现此错误。
默认情况下,R 只能对向量等原子对象进行排序。因此,要对列表使用sort() ,必须首先使用unlist()函数。
以下示例展示了如何在实践中解决此错误。
如何重现错误
假设我们在 R 中有以下列表:
#create list
some_list <- list(c(4, 3, 7), 2, c(5, 12, 19))
#view list
some_list
[[1]]
[1] 4 3 7
[[2]]
[1] 2
[[3]]
[1] 5 12 19
#view class
class(some_list)
[1] "list"
现在假设我们尝试对列表中的值进行排序:
#attempt to sort the values in the list
sort(some_list)
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...):
'x' must be atomic
我们收到错误是因为 R 无法直接对列表进行排序。
如何避免错误
为了避免该错误,您必须首先使用unlist()函数,如下所示:
#sort values in list
sort(unlist(some_list))
[1] 2 3 4 5 7 12 19
请注意,我们能够成功地对值列表进行排序而不会出现任何错误,因为我们首先使用了unlist() ,它将列表转换为数值向量。
默认情况下,R 按升序对值进行排序。
不过,我们可以使用dimining=TRUE来对值进行降序排序:
#sort values in list in descending order
sort(unlist(some_list), decreasing= TRUE )
[1] 19 12 7 5 4 3 2
请注意,这些值现在按降序排序。
其他资源
以下教程解释了如何修复 R 中的其他常见错误:
如何在 R 中修复:参数涉及不同的行数
如何修复 R:选择未使用的参数时出错
如何修复 R:无效参数
如何在 R 中修复:替换长度为零