R で修復する方法: sort.int(x, na.last,decending, …) のエラー: '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 は値を昇順に並べ替えます。
ただし、 diminishing=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 での修復方法: 置換の長さはゼロです