I guess that more preferable, R-ish way to do what you are trying to do, is to use a lookup table.
First, I create a reproducible example:
set.seed(68826333)
(
dat <- data.frame(
account = sample(1:4, 10, TRUE),
value = rnorm(10)
)
)
# account value
#1 2 1.17913936
#2 1 -1.40654534
#3 3 -2.46079924
#4 1 -0.20670095
#5 1 -1.29534910
#6 1 0.80030380
#7 4 0.37431903
#8 4 -0.07338782
#9 1 -0.50872642
#10 4 -0.15198686
Then I create a lookup table:
(
lookup <- c('1' = 'Asset', '2' = 'Suspense', '3' = 'Revenue', '4' = 'Expense')
)
# 1 2 3 4
# "Asset" "Suspense" "Revenue" "Expense"
In my lookup table names of the vector corresponds to values of the account variable from dat.
Now, whenever you want to map your numerical data from account variable into account types, you can do just simple subsetting and reassignment:
dat$account <- lookup[as.character(dat$account)]
#dat
# account value
#1 Suspense 1.17913936
#2 Asset -1.40654534
#3 Revenue -2.46079924
#4 Asset -0.20670095
#5 Asset -1.29534910
#6 Asset 0.80030380
#7 Expense 0.37431903
#8 Expense -0.07338782
#9 Asset -0.50872642
#10 Expense -0.15198686