解決:
次を使用して、列係数を整数に強制することができますas.integer
。
使用sapply
:
sapply(gen1,as.integer)
とcolwise
からplyr
:
library(plyr)
colwise(as.integer)(gen1)
たとえば、最初に A、B、C、および D の data.frame を生成します。
set.seed(1)
gen1 <- as.data.frame(matrix(sample(LETTERS[1:4], 4 * 5, rep = TRUE), ncol = 4))
## V1 V2 V3 V4
## 1 B D A B
## 2 B D A C
## 3 C C C D
## 4 D C B B
## 5 A A D D
library(plyr)
colwise(as.integer)(gen1)
## V1 V2 V3 V4
## 1 2 3 1 1
## 2 2 3 1 2
## 3 3 2 3 3
## 4 4 2 2 1
## 5 1 1 4 3
sapply(gen1, as.integer)
## V1 V2 V3 V4
## [1,] 2 3 1 1
## [2,] 2 3 1 2
## [3,] 3 2 3 3
## [4,] 4 2 2 1
## [5,] 1 1 4 3
警告が表示されるのはなぜですか?
警告メッセージは明示的ですinvalid factor level, NAs generated
。
レベル セットに属さない値で因子値を変更しようとすると、エラーが発生するため、NA に置き換えられます。エラーを再現します:
h <- data.frame(xx = factor(c("A","B")) )
h[h == "A"] <- "C" ## C don't belong to levels of xx
Warning message:
In `[<-.factor`(`*tmp*`, thisvar, value = "C") :
invalid factor level, NA generated