Подтвердить что ты не робот

Назначить имена для векторных элементов без присвоения вектора имени переменной?

В R, можно ли назначать имена компонентам вектора, не присваивая при этом этот вектор имени переменной? Обычный путь, очевидно, равен:

z <- 1:3
names(z) <- c("a", "b", "c") #normal way
names(1:3) <- c("a", "b", "c") #throws an error

Второй способ: "Ошибка в именах (1: 3) < - c (" a "," b "," c "): цель присвоения расширяется до неязыкового объекта"

В соответствии с документом выражение оценивается как

 z <- "names<-"(z,
     "[<-"(names(z), 3, "c2"))’.

Так что ничего страшного это не сработает, мне просто интересно, есть ли работа вокруг.

В идеале было бы неплохо иметь что-то вроде:

names(z <- 1:3) <- c("a", "b", "c")
> z
a b c 
1 2 3 

Просто кажется пустой тратой пространства, чтобы поместить это на две разные линии.

4b9b3361

Ответ 1

Как насчет использования setNames(), который кажется еще более чистым/понятным, чем ваш идеальный идеал?

z <- setNames(1:3, c("a", "b", "c"))
# z
# a b c 
# 1 2 3 

Ответ 2

Всегда думал, что это немного чище, также не нужен дополнительный пакет:

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