1. ホーム
  2. r

[解決済み】添え字付き代入でNAを使用することはできません

2022-01-25 13:24:59

質問

簡単な問題なのですが、克服するためのロジックがつかめずにいます。

NAを含む数値ベクトルがあり、それらに条件依存の操作を適用したい。

私の問題に似た簡単な例として

x <- c(1,3,5,7,NA,2,4,6)
x[x>=5] <- c(1:8)[x>=5]
x[x<5] <- (c(1:8)*10)[x<5]

エラー "NAs are not allowed in subscripted assignments" を返します。各属性を別々に実行すると期待通りに動作することから、それに対する賢明な解決策を知りたいのですが、どうすればよいでしょうか?

という期待通りの結果を得たいのですが。

[1]  10  20  3  4 NA  60  70  8

この操作はすでにNULLモデリング用の関数にあり、多くの反復処理で時間がかかっているので、できればforループを作る必要はない。

よろしくお願いします。 レオナルド

注 NAはNot Availableの値を意味します

解決方法は?

ロジックでは、サブセット内のNAも除外する必要があります。次の例を参照してください。 サブセット・ベクトルは、次の例の前に格納されていることに注意してください。 x が変更されます。

x <- c(1,3,5,7,NA,2,4,6)
subset1 <- x>=5 & !is.na(x)
subset2 <-  x<5 & !is.na(x)

x[subset1] <- which(subset1)
x[subset2] <- 10*which(subset2)