1. ホーム
  2. r

[解決済み】Rでのデータ操作。'X'はアトミックでなければならない

2022-02-16 03:18:56

質問

以下のコマンドを使用して、複数の列に見出しと数字があるファイルをインポートしました。 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 must be atomic" とはどういう意味ですか?

Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
  'x' must be atomic

解決方法は?

問題は salary_var は1つの要素を含むリストです。への呼び出しは sort() は、原子要素ではなく、リストをソートしようとしています。このことから salary_var を実行することで、リストとなります。 str(salary_var) . を省略した場合 c() この場合、1列のデータフレームになり、同じ問題が発生します。

簡単な解決策を2つ紹介します。

リストの要素で値を並べ替えるには

head(sort(salary_var[[1]], decreasing=TRUE), 3) 

ここで、[[1]]はリストの最初の要素を選択し、その中の値をソートします。

または salary_var を数値ベクトルとして明示的に指定します。

salary_var <- (irs_data[13]/irs_data[12])[[1]]

一つ注意:あなたの投稿の中で、あなたは new_var ではなく salary_var を呼び出す際に sort() のように、他の読者を混乱させる可能性があります。