5

I want to add an element, say 100, to vector V and use the value of variable x as the new element's name. I know it can be done like this:

V = c(V, 100)
names(V)[length(V)] = x

but I'm looking for an easy single-line solution, if there is one. I tried:

V = c(V, as.name(x)=100)

and

V = c(V, eval(x)=100)

but those don't work.

Okay, discovered best way:

V[x] = 100
tedtoal
  • 1,030
  • 1
  • 10
  • 22

2 Answers2

5

We can do this by using setnames

setNames(c(V, 100), c(names(V), x))

Adding an example,

V <- c(a = 1, b=2)
V
#a b 
#1 2 
x <- "c"
setNames(c(V, 100), c(names(V), x))
# a   b   c 
# 1   2 100 

Or as @thelatemail suggested we could only work on the additional element

c(V, setNames(100,x))
Ronak Shah
  • 377,200
  • 20
  • 156
  • 213
3

Ronak Shah's answer worked well, but then I discovered an even simpler way:

V[x] <- 100

I'm going to post a new related and very similar question - How to define an R vector where some names are in variables.

tedtoal
  • 1,030
  • 1
  • 10
  • 22