"as.X"演算子は通常、ある型を別の型に変換しますが、配列に適用するとas.integerは失敗します。これはバグですか?これは、Microsoft R Openバージョン3.3 64ビット版、i686-pc-cygwin(32ビット版)のR Foundation's R 3.3.1版です。R:なぜas.characterはint matrixをcharに変換するのですか?as.integerはchar matrixをintに変換しませんか?
> m <- matrix(rnorm(25), 5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] -0.5958330 -0.3139274 -0.4746246 0.2431716 -0.5245235
[2,] 0.5677058 0.1944457 -2.3786936 0.2516587 -0.3541963
[3,] 0.6763564 -1.7285476 -0.5878008 -1.2277048 0.7737145
[4,] -1.4607755 -0.4761012 1.0995414 0.6978072 0.6120277
[5,] 0.8593707 0.2962030 1.1791963 -0.2276658 1.1559314
> m[] <- as.integer(m)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 0 0 0
[2,] 0 0 -2 0 0
[3,] 0 -1 0 -1 0
[4,] -1 0 1 0 0
[5,] 0 0 1 0 1
> m[] <- as.character(m)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] "0" "0" "0" "0" "0"
[2,] "0" "0" "-2" "0" "0"
[3,] "0" "-1" "0" "-1" "0"
[4,] "-1" "0" "1" "0" "0"
[5,] "0" "0" "1" "0" "1"
> m[] <- as.integer(m)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] "0" "0" "0" "0" "0"
[2,] "0" "0" "-2" "0" "0"
[3,] "0" "-1" "0" "-1" "0"
[4,] "-1" "0" "1" "0" "0"
[5,] "0" "0" "1" "0" "1"
行列またはベクトルのサブセットに割り当てる場合、行列/ベクトルの型はより高い(より一般的な)型にのみ変更できます。 – Roland
...特に、 'm [] < - as.integer(m)'は期待どおりに動作します。 – joran
@joran:m [] < - as.integer(m)は期待通りに動作しません。既に投稿したコードを見てください。 –