私はRプログラミングの初心者です。いくつかのチュートリアルをチェックした後、私が必要としたほとんどのものを取り上げましたが、まだ欠けているものが1つあります。データ構造マップです。Rにはpythonや 'C++'のように 'dict'がありますか?
Rにdictがあるかどうか誰もが知っていますか?私は(キー、値)のペアを格納することができますか?
ありがとうございます!
私はRプログラミングの初心者です。いくつかのチュートリアルをチェックした後、私が必要としたほとんどのものを取り上げましたが、まだ欠けているものが1つあります。データ構造マップです。Rにはpythonや 'C++'のように 'dict'がありますか?
Rにdictがあるかどうか誰もが知っていますか?私は(キー、値)のペアを格納することができますか?
ありがとうございます!
はい、それはlist
と呼ばれます。
> x <- list(a=1, b="foo", c=c(1,1,2,3,5))
> x
$a
[1] 1
$b
[1] "foo"
$c
[1] 1 1 2 3 5
Pythonでは、それは価値があるためdict
と呼ばれます。
'pairlist'関数もあります。 –
環境も候補者であり、多くの場合、最良の選択肢。
e<-new.env(hash=T)
e$a<-1
e$b<-2
R> e$a
[1] 1
リストの欠点は、リニア検索であることです。
環境はリニア検索より優れたものを使用していますか?リニア検索のパフォーマンスが面倒になる前に、メンバー数は何人ですか? –
http://broadcast.oreilly.com/2010/03/lookup-performance-in-r.html は簡単な概要を示します。要するに、インデックス配列を参照しているのであれば行くことができますが、もしラベル化された環境で行っているのであれば良いでしょう。 1024より小さいものはありませんが、ラベル検索の方が環境が良いです。あなたが小さいルックアップテーブルを持っているならば、ベクトルはより良くなるでしょう。 –
配列/ベクトル要素に名前を付けることができるので、組み込みのマップ/辞書のプロパティの一部を取得できます。
x <- c(apple = 1, banana = 99, "oranges and lemons" = 33)
x["apple"]
x[c("bananas", "oranges and lemons")]
x[x == 99]
(自分の価値観のタイプが異なる場合は、ベクトルの代わりにlist
を使用する必要があります。)
は、前述のように、ハッシュパッケージには、わずかなオーバーヘッドを追加しないで柔軟、直感的に提供しませんマップ/ハッシュ/ディクショナリにアクセスするためのメソッド。別の言語を使用するユーザーにとっては非常に簡単です。
リストに少数の要素がある場合は、リストが最適なソリューションです。 (< 200程度)。
ごくわずかなオーバーヘッドを許容できず、柔軟で直感的な方法を望まない場合は、環境を使用することをお勧めします。
ほとんどの状況でハッシュパッケージが最適です。
C-
あなたはPython用語をC++と混同しています。 * 'dict' *は(キー、値)のペアを格納するデータ構造です。 * 'map(somefn、someseq)' *は 'someseq' *のすべての要素に' somefn' *を適用する関数です。 – smci