キーと値のペアを格納する必要があるマップ データ構造に取り組んでいます。
map[key1]<-value1
map[key2]<-value2
map[key3]<-value3
map[key4]<-value4
キーに基づいて値を取得する必要があります。これをRで実装するにはどうすればよいですか?
で構築された単純なベクトルc
はスカラー値以上のものを処理できないため、リストを使用します。
> map = c(key1 = c(1,2,3), key2 = 2, key3 = 3)
> map[["key1"]]
Error in map[["key1"]] : subscript out of bounds
なぜこれが失敗するのですか?今だからmap
:
> map
key11 key12 key13 key2 key3
1 2 3 2 3
list
代わりにa を使用します。
> map = list(key1 = c(1,2,3), key2 = 2, key3 = 3)
> map[["key1"]]
[1] 1 2 3
動的に拡張可能:
> map[["key99"]]="Hello You!"
> map
$key1
[1] 1 2 3
$key2
[1] 2
$key3
[1] 3
$key99
[1] "Hello You!"
map=list()
構築する場合は、空の状態から始めます。
名前付きベクトルを使用できます。
map = c(key1 = 1, key2 = 2, key3 = 3)
map[["key1"]]
そして、あなたは簡単に新しいものを追加することができます:
map[["key4"]] = 4
> map
key1 key2 key3 key4
1 2 3 4