3

キーと値のペアを格納する必要があるマップ データ構造に取り組んでいます。

 map[key1]<-value1
 map[key2]<-value2
 map[key3]<-value3
 map[key4]<-value4

キーに基づいて値を取得する必要があります。これをRで実装するにはどうすればよいですか?

4

2 に答える 2

9

で構築された単純なベクトル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()構築する場合は、空の状態から始めます。

于 2013-02-04T07:54:50.747 に答える
1

名前付きベクトルを使用できます。

map = c(key1 = 1, key2 = 2, key3 = 3)
map[["key1"]]

そして、あなたは簡単に新しいものを追加することができます:

map[["key4"]] = 4
> map
key1 key2 key3 key4 
   1    2    3    4 
于 2013-02-04T07:30:00.887 に答える