Remove names from named vector and get only the values
Asked Answered
L

2

36

I have a vector like below

tmp <- c(a=1, b=2, c=3)

a b c
1 2 3

I want to flatten this vector to get only 1, 2, 3.

I tried unlist(tmp) but it still gives me the same result.

How to achieve that efficiently?

Linet answered 7/11, 2018 at 16:54 Comment(1)
Try as.numeric(tmp)Fleuron
A
79

You just want to remove the names attribute from tmp. There are a number of ways to do that.

You can unname it.

unname(tmp)
# [1] 1 2 3

Or use a very common method for removing names, by setting them to NULL.

names(tmp) <- NULL

Or strip the attributes with as.vector.

as.vector(tmp)
# [1] 1 2 3

Or re-concatenate it without the names.

c(tmp, use.names=FALSE)
# [1] 1 2 3

Or use setNames.

setNames(tmp, NULL)
# [1] 1 2 3
Anselm answered 7/11, 2018 at 16:56 Comment(0)
S
4

There is a use case that the above does not cover:

tmp <- c(1,2,3)
names(tmp) <- c("a","b","c")

In this case you need to use both:

unlist(unname(tmp))
Scandian answered 29/10, 2021 at 11:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.