web-dev-qa-db-ja.com

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

Rでは、最初にそのベクトルを変数名に割り当てることなく、ベクトルのコンポーネントに名前を割り当てることはできますか?通常の方法は明らかに:

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

2番目の方法では、「名前のエラー(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つの異なる行に配置するのはスペースの無駄のようです。

24
zzk

setNames()を使用するのはどうですか?

z <- setNames(1:3, c("a", "b", "c"))
# z
# a b c 
# 1 2 3 
43
Josh O'Brien

これは少しきれいだといつも思っていました、また追加のパッケージは必要ありません:

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