1

次のデータフレームがあります。

> res5
          A        B
 1   (75,89.3] (4,14.9]
 2  (96.4,100] (-Inf,0]
 3        <NA>     <NA>
 4      (0,75] (4,14.9]
 5        <NA>     <NA>
 6 (89.3,96.4] (4,14.9]


> dput(res5)
structure(list(A = structure(c(3L, 5L, NA, 2L, NA, 4L), .Label = c("(-Inf,0]", 
"(0,75]", "(75,89.3]", "(89.3,96.4]", "(96.4,100]", "(100, Inf]"
), class = "factor"), B = structure(c(3L, 1L, NA, 3L, NA, 3L), .Label = c("(-Inf,0]", 
"(0,4]", "(4,14.9]", "(14.9,68]", "(68, Inf]"), class = "factor")), .Names = c("A", 
"B"), row.names = c(NA, 6L), class = "data.frame")

このデータフレームに関数を適用すると、次の結果が得られます。

res6<-lapply (names(res5), function (x){as.numeric(!res5[,x] %in% head(levels(res5[,x]), 2))})


> res6
[[1]]
[1] 1 1 1 0 1 1

[[2]]
[1] 1 0 1 1 1 1

私の関数は、すべての NA 値を「1」としてコーディングしたことを除いて、うまく機能します。関数がそれを実行するのを防ぎ、NA を NA のままにしておくにはどうすればよいですか? ポイントは「NA」をNA(引用符なし)に変換することにあると思われます。試してみました

  within (res5 , "NA"==NA)

そしてそれは助けにはなりませんでした。事前にどうもありがとうございました

4

1 に答える 1