データの納め方と参照の仕方4

  • Index 添え字
x[i]
     x[i, j]
     x[[i]]
     x[[i, j]]
     x$a
     x$"a"
  • "[i]"
    • はi番目の要素を取り出す
    • "[v]"のようにベクトルvを与えることができる
    • "[m]"のように行列mを与えることができる
      • このときは、1行ごとに行列・アレイのdimension情報を積んでおく
"[[i]]"
    • もi番目の要素を取り出す
    • "["と
"[["

とに大差がないので、"["はatomicベクトルや、その行列に対して使うのに対し、

"[["

はリストに使うことが多い

  • "$"
    • は文字列やシンボルを引数にする
    • "Recursive"なオブジェクトに用いる
    • ここで、"Recursive"なオブジェクトと"$"の関係って…
      • "Recursive"はこちらにあるように、リストは要素にリストを持つことができて、入れ子でどんどん深くできること
      • "Reucursive"であるということと、"$"で取り出すということをつなげる意味が分からないけれど、下のようにできることは確かで
        • 探索要素を深堀りすることができるし
        • 深くも、浅くも探索することができる
      • "Recursive"かどうかを判定する関数もあって"is.recursive()"
testL<-list(f=1,a=3:5)
testL2<-list(f=testL,g=testL)
testL3<-list(x=testL2,y=testL,z=testL2)
testL3
testL3$x$f
testL3$x$f$a
testL3[[1]]
testL3[[1]][[1]]
testL3[[1]][[1]][[2]]
testL3[[1]][[1]][[2]]

> testL<-list(f=1,a=3:5)
> testL2<-list(f=testL,g=testL)
> testL3<-list(x=testL2,y=testL,z=testL2)
> testL3
$x
$x$f
$x$f$f
[1] 1

$x$f$a
[1] 3 4 5


$x$g
$x$g$f
[1] 1

$x$g$a
[1] 3 4 5



$y
$y$f
[1] 1

$y$a
[1] 3 4 5


$z
$z$f
$z$f$f
[1] 1

$z$f$a
[1] 3 4 5


$z$g
$z$g$f
[1] 1

$z$g$a
[1] 3 4 5



> testL3$x$f
$f
[1] 1

$a
[1] 3 4 5

> testL3$x$f$a
[1] 3 4 5
> testL3[[1]]
$f
$f$f
[1] 1

$f$a
[1] 3 4 5


$g
$g$f
[1] 1

$g$a
[1] 3 4 5


> testL3[[1]][[1]]
$f
[1] 1

$a
[1] 3 4 5

> testL3[[1]][[1]][[2]]
[1] 3 4 5
> testL3[[1]][[1]][[2]]
[1] 3 4 5
  • ハッシュ
    • データのアクセスの方法にハッシュがあります
    • キーとバリューのペアのデータのバリューをキーで呼び出す仕組みです
    • 以下のように呼び出すことは、「キーで呼び出す」ことに対応します
obj$name
obj['name']
obj[['name']]
    • しかしながら、『「ハッシュ」で呼び出す』というのは、「キー」を使って呼び出すことではなく、「ハッシュという仕組み」を使って(結果として「キー」を使って)呼び出すということなので、これは「ハッシュ呼び出し」ではありません
    • これについては、package hashが提案されているようです。別記事にて→こちら