ベクトルに変数名を割り当てずにベクトルエントリに名前を割り当てますか? 質問する

ベクトルに変数名を割り当てずにベクトルエントリに名前を割り当てますか? 質問する

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 

おすすめ記事