Similar to this question: Replace multiple values in r but: I would like to only use base R and I would like to replace integers, so the named vector solution adopted as below does not work:
testing <- data.frame(
var1 = c(1, 6, 17)
)
# this is not possible
dict <- c(
1 = 'ICMP',
6 = 'TCP',
17 = 'UDP',
)
testing$var1 <- dict[testing$var1]
I know I can do
testing$var1[testing$var1 == 1] <- "ICMP"
testing$var1[testing$var1 == 6] <- "TCP"
testing$var1[testing$var1 == 17] <- "UDP"
but isn’t there a more convenient way in base R?
>Solution :
# create named vector dict
dict <- c('ICMP', 'TCP', 'UDP')
names(dict) <- c(1,6,17)
# replace matching values
testing$var2 <- dict[as.character(testing$var1)]
# var1 var2
# 1 1 ICMP
# 2 6 TCP
# 3 17 UDP