如何在 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 中修复:替换长度为零

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注