問題

私は次のような名前付きベクトルを作る関数を書こうとしています:

 > x
  a   b   c 
"i" "j" "k" 
 

しかし、次の機能:

 getNamedCharacter <- function() {
  x[c("a", "b", "c")] <- c("i", "j", "k")
}
 

...名前のないベクトルを返します:

 > x <- getNamedCharacter()
> x
[1] 1 2 3
 

...コード自体の行は期待どおりに動作しますが、

 > x <- NULL
> x[c("a", "b", "c")] <- c("i", "j", "k")
> x
  a   b   c 
"i" "j" "k"
 

関数を使用して名前付きベクトルを取得するにはどうすればよいですか? ありがとう!

  ベストアンサー

structureを使用できます。おそらく属性を追加する:

 make_named_vec <- function(vec, vec_names){
  structure(vec, names = vec_names)
 }
 make_named_vec(c("i","j","k"), c("a","b","c"))
  a   b   c 
"i" "j" "k"

res <-make_named_vec(c("i","j","k"), c("a","b","c"))
 str(res)
 Named chr [1:3] "i" "j" "k"
 - attr(*, "names")= chr [1:3] "a" "b" "c"
 

  同じタグがついた質問を見る

r