1

R のほとんどの基本データ構造では、値と名前の両方を同時に割り当てることができます。例えば:

l <- list(a=1:3, b=4)
m <- matrix(1:9, 3, 3, dimnames=list(letters[1:3], letters[1:3]))
d <- data.frame(a=1:5, b=letters[1:5], c=rnorm(5))

ただし、ベクトルの場合は異なります。私が知る限りnames、ベクトルに与える唯一の方法はその後です:

v <- 1:3
names(v) <- letters[1:3]

cnamesat インスタンス化を指定できる引数がありません。(または
のように) 割り当てでそれを実行しようとしても機能しません。listsdata.frames

v <- c("a"=1)  # error

ベクトルのデータと名前の両方を同時に割り当てることは可能ですか?

4

3 に答える 3

4

ジョシュア・ウルリッヒがコメントで答えたように、正しい答えは次を使用することsetNamesです:

v <- setNames(1:2, letters[1:2])

元の質問でも間違っています:v <- c("a"=1)動作しますが、拡張するのは非常に面倒です: v <- c("a"=1, "b"=2, ...).

于 2013-11-02T12:23:02.193 に答える
3

別の(醜い)解決策は、使用することですstructure()

v <- structure(1:3, .Names = c("a", "b", "c"))

(苦労して作った結果を見てここにたどり着きましたdput(v)。)

于 2013-11-02T14:44:08.050 に答える