R では、最初にベクトルを変数名に割り当てることなく、ベクトルの要素に名前を割り当てることは可能ですか? 通常の方法は明らかに次のとおりです。
z <- 1:3
names(z) <- c("a", "b", "c") #normal way
names(1:3) <- c("a", "b", "c") #throws an error
2 番目の方法では、「names(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
それを 2 行に分けて書くのはスペースの無駄のように思えます。
ベストアンサー1
setNames()
あなたが提案した理想よりもさらにすっきり/明確であると思われるを使用するのはいかがでしょうか?
z <- setNames(1:3, c("a", "b", "c"))
# z
# a b c
# 1 2 3