戯言日記

Rの話だと思ったら唐突にサバゲーが混じってくる何か。

"::"は入れたほうがいい

初記事なので、先日やらかした間抜けなミスでドツボにはまったというお話を。
こんなアホは自分だけだと思うけど、戒めとして投げておく。

 

自分は解析結果をいくつかのシートに分けてエクセル出力する時は「xlsx」パッケージを使用しているのだが、

Book <- createWorkbook(type="xlsx")
sheet <- createSheet(Result, sheet="Data" ) #データシートを作成

を実行したところ、

Error in createSheet(Res, sheet = "PeekHz") :
unused argument (sheet = "Data")

などと表示された。はて???「xlsx」パッケージは入ってるぞ???
で、ちょっと確認したらこういうことだった。

 

library(xlsx)
library(XLConnect)

XLConnect 0.2-15 by Mirai Solutions GmbH [aut],
Martin Studer [cre],
The Apache Software Foundation [ctb, cph] (Apache POI),
Graph Builder [ctb, cph] (Curvesapi Java library)
http://www.mirai-solutions.com
https://github.com/miraisolutions/xlconnect

次のパッケージを付け加えます: ‘XLConnect’

以下のオブジェクトは ‘package:xlsx’ からマスクされています:

createFreezePane, createSheet, createSplitPane, getCellStyle,
getSheets, loadWorkbook, removeSheet, saveWorkbook, setCellStyle,
setColumnWidth, setRowHeight

Warning message:
パッケージ ‘XLConnect’ はバージョン 3.6.2 の R の下で造られました

 

要するに「2種類以上のパッケージが同じ名前の機能持ってるから、後から入れたやつを優先するよ」という理由で「xlsx」パッケージのcreateSheetが使えなかったらしい。Excel関連のパッケージを追加したのが初めてだったから油断してた。
なので当然、こう書き換えれば動く。

sheet <- xlsx::createSheet(Result, sheet="Data" ) #データシートを作成

特にパッケージを増やしているとこれに引っ掛かる率が上がりそうなので、なるべく気を付けた方がいいなと身を以て実感した。