1. ホーム
  2. r

[解決済み】Rエラー。"新しい列は既存の列の後に穴を空ける"

2022-02-02 01:24:43

質問内容

2つのデータフレームがあります。1つはタスクの正確さ、もう1つは応答時間(RT)です。 すべての試行ではなく、正しい試行のRTだけを取得しようとしています。 正確性の表で不正確な試行をNAと表示し、RTの表で対応するセルをNAにしようとすると、エラーが発生するようです。

Error in `[<-.data.frame`(`*tmp*`, which(is.na(ACC)), value = NA) : new columns would leave holes after existing columns

コードはかなり単純です。ランダムに生成されたデータで試してみましたが、問題なく動作しているようです。 コードは以下の通りです。

ファイルを開く

ACC <- read_excel("PJ_ACC_TABLE.xlsx", sheet = 1)
RT <- read_excel("PJ_RT_TABLE.xlsx", sheet = 1)

エラーをNAに変更する

ACC <- ifelse(ACC>0,1,NA)

変更点

RT[which(is.na(ACC))] <- NA

私のACCテーブルは次のようなものです。

ACCテーブル

一方、私のRTテーブルは以下のような感じです。

RTテーブル

ACCテーブルをNAを含むように変更した後、ベクトルに変わることに気づきました。

何かお手伝いいただけると助かります、ありがとうございます

解決方法は?

インデックスを作成することができます。 RTis.na(ACC) というように。この答えは、RTとACCが同じ次元であれば、うまくいきます。

#example data
RT <-data.frame(matrix(1:25,ncol=5))
ACC <-data.frame(matrix(rep(1,25),ncol=5))
ACC[c(1,3,5),c(2,3,4)] <-NA

#Put NA in RT where ACC is NA
RT[is.na(ACC)] <-NA
RT

  X1 X2 X3 X4 X5
1  1 NA NA NA 21
2  2  7 12 17 22
3  3 NA NA NA 23
4  4  9 14 19 24
5  5 NA NA NA 25