0

(i, j)RIでは、対応する整数値を持つキーとしてペアを持つ辞書 (ある意味では Python のようなもの) を持てるかどうか疑問に思っていました。Rでこれを構築するためのクリーンで直感的な方法は見たことがありません。私の辞書のビジュアルは次のようになります。

(1, 2) --> 1

(1, 3) --> 3

(1, 4) --> 4

(1, 5) --> 3

編集: これらのキーと値のペアを挿入するコード行は、カウンター i と j のループにあります。たとえば、私が持っているとします:

for(i in 1: 5)
{  
  for(j in 2: 4)
  {
    maps[i][j] = which.min(someVector)
  }
}

maps[i][j]探している機能を取得するにはどうすればよいですか?

4

5 に答える 5

3

あなたはただdata.frameを使うことができます:

a = data.frame(spam = c("alpha", "gamma", "beta"), 
               shrub = c("primus","inter","parus"),
               stringsAsFactors = FALSE)
rownames(a) = c("John", "Eli","Seth")
> a
      spam  shrub
John alpha primus
Eli  gamma  inter
Seth  beta  parus

>     a["John", "spam"]
[1] "alpha"

これは、名前付きキーを持つ 2D ディクショナリ スタイル オブジェクトのケースを処理します。キーは整数にすることもできますが、数値ではなく文字にする必要がある場合があります。

于 2013-04-18T20:43:46.190 に答える
2

R 行列を使用すると、これを行うことができます。疎バージョンと密バージョンの両方があります。tm-package は、疎行列のバリエーションを使用して、辞書の実装を形成していると思います。これは、行列 M の [i,j] 要素を抽出する方法を示しています。ここで、[i,j] は 2 列の行列として表されます。

M<- matrix(1:20, 5, 5)
ij <- cbind(sample(1:5), sample(1:5) )

> ij
     [,1] [,2]
[1,]    4    4
[2,]    1    2
[3,]    5    3
[4,]    3    1
[5,]    2    5
> M[ij]
[1] 19  6 15  3  2

@Justin は、位置によってインデックス付けできるリストを使用できることも指摘しています。

 L <- list( as.list(letters[1:5] ), as.list( paste(2,letters[1:5] ) ) )

> L[[1]][[2]]
[1] "b"
> L[[2]][[2]]
[1] "2 b"
于 2013-04-18T20:44:15.247 に答える