ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

【R】データセットから条件をつけて一部を抜き出すsubset()関数

これは便利や!

data <- data.frame(ID = seq(1:10), Value = c(10,20))

こんなデータセットを用意する。中身はこんな感じ。 ※ちなみに左の番号はID列と重複じゃなくて行番号みたいなやつ。自動で出力されました。

   ID Value
1   1    10
2   2    20
3   3    10
4   4    20
5   5    10
6   6    20
7   7    10
8   8    20
9   9    10
10 10    20

このデータセットから一部データを抜き出す。subset()でやる。

例えば、IDが2の倍数の行だけ取り出したい時

subset(data, (ID %% 2) ==  0)
   ID Value
2   2    20
4   4    20
6   6    20
8   8    20
10 10    20

すばらしい。。。

【R】行列をつくってくれるよcbindさんとrbindさん

行列ってなに!?

とりあえず表みたいなイメージで理解しております。

cbind(c(22,3,4),c(4,5,6))
     [,1] [,2]
[1,]   22    4
[2,]    3    5
[3,]    4    6

22,3,4のベクトルと、4,5,6のベクトルを列ベクトルで結合してくれます、cbind()さんです。

反対(?)に、行ベクトルで結合してくれるのは、rbind()さんです。

rbind(c(22,3,4),c(4,5,6))
    [,1] [,2] [,3]
[1,]   22    3    4
[2,]    4    5    6

ちなみに

cbind(c(22,3,4,5),c(4,5))

のように、左が4つで、右が2つだった場合。

    [,1] [,2]
[1,]   22    4
[2,]    3    5
[3,]    4    4
[4,]    5    5

こうなります。左の数分、右が保管するようにループするって感じですかね。

【R】lapplyとかいうよくわからないやつ

lapply(c(1, 2, 3), function(s) return(s))

とりあえず、チュートリアルでこんなふうに組んでみたところ

[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

うむむ。。。

とりあえず、ベクトルをループしながら、なんか処理させるって理解でいいのかな? PHPでいうところのforeach

lapply(c(1:10), function(s) return(s + 1))

計算してみた

[[1]]
[1] 2

[[2]]
[1] 3

[[3]]
[1] 4

[[4]]
[1] 5

[[5]]
[1] 6

[[6]]
[1] 7

[[7]]
[1] 8

[[8]]
[1] 9

[[9]]
[1] 10

[[10]]
[1] 11

こんな理解でいい?

とりあえず今日は時間がきたので終わり。

【CakePHP】QRコードを出力

GitHubで探したら見つかった。ありがとうOSS

github.com

  • controller側
<?php

...

  public $heplers = array('QrCode');
  • view側
        <div class="qr-code-image">
            <?=$this->QrCode->text('http://www.yahoo.co.jp');?>
        </div>

コードを見た感じ、GoogleChartを使用しているっぽい。

ちなみに、最初はスターが多いOSSを利用しようとした。

github.com

さっそく使ってみようとcomposerで落として準備して実行したところ。。。

Error: [FatalErrorException] Call to undefined function Endroid\QrCode\imagettfbbox()

なぬ!?(´・ω・)

調べてみたら、imagettfbbox()はGDライブラリとFreetypeって何かをいれないといけないらしい。

本番で動作するかどうかわからなかったので(インストールさせるって手でもよかったですが、管理外なのよね。)このOSSを利用するのはやめました。