Problem

You want to convert between numeric vectors, character vectors, and factors.

Solution

Suppose you start with this numeric vector n:

n <- 10:14
n
#> [1] 10 11 12 13 14

To convert the numeric vector to the other two types (we’ll also save these results in c and f):

# Numeric to Character
c <- as.character(n)

# Numeric to Factor
f <- factor(n)
# 10 11 12 13 14

To convert the character vector to the other two:

# Character to Numeric
as.numeric(c)
#> [1] 10 11 12 13 14

# Character to Factor
factor(c)
#> [1] 10 11 12 13 14
#> Levels: 10 11 12 13 14

Converting a factor to a character vector is straightforward:

# Factor to Character
as.character(f)
#> [1] "10" "11" "12" "13" "14"

However, converting a factor to a numeric vector is a little trickier. If you just convert it with as.numeric, it will give you the numeric coding of the factor, which probably isn’t what you want.

as.numeric(f)
#> [1] 1 2 3 4 5

# Another way to get the numeric coding, if that's what you want:
unclass(f)
#> [1] 1 2 3 4 5
#> attr(,"levels")
#> [1] "10" "11" "12" "13" "14"

The way to get the text values converted to numbers is to first convert it to a character, then a numeric vector.

# Factor to Numeric
as.numeric(as.character(f))
#> [1] 10 11 12 13 14