次のコマンドを使用して、複数の列に見出しと番号が含まれるファイルをインポートしました。 irs_data <- read.csv(file="10incyallnoagi.csv")
1つの列の値を別の列で割ってから、最も高い3つの値を決定したいと思います。
salary_var <- c(irs_data[13]/irs_data[12])
head(sort(new_var, decreasing=TRUE), 3)
常にエラーが発生し続けます。 [〜#〜] r [〜#〜]の初心者として、この文脈で「xはアトミックでなければならない」とはどういう意味ですか。
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) :
'x' must be atomic
問題は、_salary_var
_が単一の要素を含むリストであるということです。次に、sort()
の呼び出しは、アトミック要素ではなくリストをソートしようとしています。 str(salary_var)
を実行すると、_salary_var
_がリストであることがわかります。 c()
を省略すると、代わりに単一の列を持つデータフレームになり、同じ問題が発生します。
2つの簡単な解決策:
リストの要素の値を並べ替えるには、
_head(sort(salary_var[[1]], decreasing=TRUE), 3)
_
ここで、[[1]]はリストの最初の要素を選択し、その中の値を並べ替えます。
または、代わりに数値ベクトルとして_salary_var
_を明示的に作成します。
_salary_var <- (irs_data[13]/irs_data[12])[[1]]
_
注:あなたの投稿では、sort()
の呼び出しで_new_var
_の代わりに_salary_var
_を記述しているため、他の読者を混乱させる可能性があります。
nlist()を使用して、リストをベクトルに変換できます。sort()関数は、並べ替えのためにベクトル形式を取ります。だからただ使う
head(sort(unlist(new_var), decreasing=TRUE), 3)