1/2 毎日ずっとひだまりのなかでねてたい

Rのpasteで空白が入っちゃうのを防ぐ

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/17.html

このHPの例みたいに

 paste("May I", "help you ?")
[1] "May I help you ?

"May I"と"help you ?"との間に空白が入るのは,多分区切り文字のデフォルトが半角スペースになっているから.これがいやだっていうときは,

paste("May I", "help you ?", sep ="")

引数で区切り文字の指定を何にもなしにすればOK.

 

rbindのコラム名が違うとエラーになる話

names do not match previous names」というやつ.

これ,超微妙な違いでもダメなので,ほかのとこでdata.frameでくっつけたデータを使おうとしたりすると,そのデータ名が列名にくっついていてrbindで扱えなくなったりする.たとえば,

data <- data.frame(D1 = data1, D2 = data2)

datanew <- data.frame(D3 = data3, D4 = data4)

とかすると,多分列名にD1.緯度とかD2経度みたいにデータ名がついちゃったりすることがあり,コラム名が違うものになってしまう.

そこで,コラム名を変えてそろえてしまえばrbindが使えますという話.

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/26.html

これはたぶん万能.

names(datanew) <- names(data)

とかすればOK(コラム名が同じデータかどうかは確認すること).

 

もしくは,もっと単純なケースで,for文で同じものを繰り返しくっつけていくのにrbindを使いたくて…くっつけていく元のデータは存在しなくて…でも新しく定義するのはめんどくさくて…みたいなときは,初期値をNULLにしておけば解決.

matA <- matrix(1:6, ncol = 3, nrow = 2)
matSum
<- rbind(matSum, matA) #matSumが見つからないというエラーが出ます

 

#まとめ用のオブジェクトをNULLで定義しておく
matSum
<- NULL
matA
<- matrix(1:6, ncol = 3, nrow = 2)
matSum
<- rbind(matSum, matA) #エラーを出しません

webbeginner.hatenablog.com

 

rbindの「不正な因子基準」

「In `[<-.factor`(`*tmp*`, ri, value = c(○○): 不正な因子水準です。NAが発生しました」

rbindは便利なようで意外とよくわからないエラーが出る.笑 

hoge <- rbind(hoge1, sapply(hoge2, as.character))

数値型のデータに文字型をアペンドする事は可能だが,文字型のデータに数値型などのデータをアペンドすると「In `[<-.factor`(`*tmp*`, ri, value = c(○○): 不正な因子水準です。NAが発生しました」という(それを読むだけでは意味の良くわからない)警告が出て,数値が<NA>に書き換えられてしまう.それを避けるためにも型が混ざっているようなデータの場合は,「rbind」の二つ目引数に「sapply(引数, as.character)」をつけていた方がいいだろう.

・文字型データフレームに数値型データフレームをくっつけようとすると出るエラー

・これが出ると数値がNAに変えられてしまう

・これを防ぐためには,数値型データのほうにas.characterを適用して全部文字列型に変換すればエラーは出なくなる

d.hatena.ne.jp

 

Rの文字コードエラーの話

Error: invalid multibyte character in parser at line 1

というのが突如出始めることがある.Rstudioは基本的に実行しなければ勝手にコンソールにメッセージが出ることはないのだけど,これは(なにもしてないのに)一定時間ごとに何度も表示される.こわい.笑

その原因はなにかよくわからなかったのだけど,こちらを見て考えるに,

what-alnk.hatenablog.com

特定文字のあとに[をつけると出るらしい.文字コードの問題みたいだ.ちなみに私はギリシャ文字じゃなくて日本語(漢字)のあとに[だったのだけど…

Rプログラム (TAKENAKA's Web Page)

これみたいな感じで,データ名$列名 の表現を使おうとしていた.この表現をやめてデータ名[,列番号]にしたら直ったから,多分ここが原因だったのだと思う.

同じエラーに対してアップデートしてみてくださいという回答がついている質問サイトもあったから,

stackoverflow.com

どうしても上の表現を使わなきゃいけないときはアップデートしてみるのもいいかも.

 

 

BibTeXがわからなかった話

Mendeleyを導入しました.このあたり見れば簡単にbibファイル作ってその引用を使ってかけます.

BibTeX を使った文献目録の作成 - Okomeda Net

LaTeX(文献の参照BibTeXの書き方)

pioneerboy.hatenablog.com

www.ketsuago.com