Ответ 1
Как насчет использования setNames()
, который кажется еще более чистым/понятным, чем ваш идеальный идеал?
z <- setNames(1:3, c("a", "b", "c"))
# z
# a b c
# 1 2 3
В 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
Просто кажется пустой тратой пространства, чтобы поместить это на две разные линии.
Как насчет использования setNames()
, который кажется еще более чистым/понятным, чем ваш идеальный идеал?
z <- setNames(1:3, c("a", "b", "c"))
# z
# a b c
# 1 2 3
Всегда думал, что это немного чище, также не нужен дополнительный пакет:
z <- c(a=1, b=2, c=3)
# z
# a b c
# 1 2 3