新しいセッションを指定して、関数のドキュメントで提供されている小さなggparcoord(.)の例を実行します
library(GGally)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 100), ]
ggparcoord(data = diamonds.samp, columns = c(1, 5:10))
結果は次のプロットになります。
繰り返しますが、新しいセッションで開始し、ロードされたdplyrで同じスクリプトを実行します
library(GGally)
library(dplyr)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 100), ]
ggparcoord(data = diamonds.samp, columns = c(1, 5:10))
結果:
エラー: (リスト) オブジェクトを型 'double' に強制することはできません
library(.)ステートメントの順序は重要ではないことに注意してください。
質問
- コードサンプルに何か問題がありますか?
- 問題を克服する方法はありますか (いくつかの名前空間関数を介して)?
- それともこれはバグですか?
より大きな分析ではdplyrとggparcoord(.)の両方が必要ですが、この最小限の例は私が直面している問題を反映しています。
バージョン
- R @ 3.2.3
- dplyr @ 0.4.3
- GGally @ 1.0.1
- ggplot @ 2.0.0
アップデート
Joran が提供した優れた回答をまとめると、次のようになります。
回答
- ggparcoord(.)は、ダイヤモンド データ セット (dplyr がロードされている場合) によって指定されたtbl_df ではなく、data.frameを想定しているため、コード サンプルは実際には間違っています。
- この問題は、tbl_dfをdata.frameに強制することで解決されます。
- いいえ、バグではありません。
作業コードのサンプル:
library(GGally)
library(dplyr)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 100), ]
ggparcoord(data = as.data.frame(diamonds.samp), columns = c(1, 5:10))