> x <- c(11.49, 9.91, 9.59, 8.94, 10.06, 10.02) > f <- factor(x) > x [1] 11.49 9.91 9.59 8.94 10.06 10.02 > f [1] 11.49 9.91 9.59 8.94 10.06 10.02 Levels: 8.94 9.59 9.91 10.02 10.06 11.49 のように,実数値ベクトルを factor に変換したあと, factr ベクトルから元の実数値ベクトルを得るために, 次のようにしても目的は達成できない。 > as.numeric(f) [1] 6 3 2 1 5 4 levels 関数というのがあり,それは次のような結果を返すことがわかるから, > levels(f) [1] "8.94" "9.59" "9.91" "10.02" "10.06" "11.49" 次のようにすると目的の達成への第一歩であることがわかる。 > levels(f)[f] [1] "11.49" "9.91" "9.59" "8.94" "10.06" "10.02" 最終的な答えは以下の通り。 > as.numeric(levels(f)[f]) [1] 11.49 9.91 9.59 8.94 10.06 10.02 これには,別解もある。 どちらも効率的には,そんなに大きな違いはない。 > as.numeric(as.character(f)) [1] 11.49 9.91 9.59 8.94 10.06 10.02 これらは,関数を作っておくと良いかもしれない。 > factor2numeric <- function(x) as.numeric(as.character(x)) > factor2numeric(f) [1] 11.49 9.91 9.59 8.94 10.06 10.02