4

条件付きベクトルにNAが含まれている場合、条件付き添字を付ける方法はありますか? このようなdata.frameがあるとします

dframe <- data.frame(a=c(1,32,4,5,8),b=c(1,2,3,4,5),d=c(NA,5,5,10,9))
dframe[dframe$d > 9,"a"] <- NA

dframe$d の NA がなければ、これは簡単です。NA を回避するためにhere%in%のような構文を見てきましたが、条件を管理する方法がわかりません。条件の欠損値の NA を取得したいのか、それとも何か他のものを取得したいのかよくわからないので、これはやや一般的な問題であることがわかります。しかし、人々がこの状況にどのように対処するかにも興味があります。

私の特定の状況では、条件で NA が FALSE のように扱われたときに、単純に役立ちます。

4

2 に答える 2

6

インデックス作成をNA以外の値に制限することができます

dframe[ dframe$d > 9 & !is.na(dframe$d), "a"] <- NA

編集:これはRインフェルノからのよりコンパクトな代替品です:

dframe[ which(dframe$d > 9), "a"] <- NA
于 2013-02-06T17:33:56.570 に答える
5

あなたは近かった。あなたは状態を持っていましたそして%in%。リンクだけではありません。実際には簡単です。%in%一緒に使用するだけTRUEで、他のすべての値が返されますNAFALSE

 dframe[(dframe$d > 9) %in% TRUE, "a"] <- NA
于 2013-02-06T17:32:36.047 に答える