0

ここで同様の質問をいくつか見ましたが、私のものとまったく同じものはありませんでした-または、それらが同じであったとしても、Rでのプログラミングの初心者として、それを認識しませんでした(私は他の多くの言語でプログラミングしましたが、Rではありません! )

read.csv で変換する csv ファイルからの入力データセットがあります。データセットには 2 つのグループがある場合とない場合があります。次のようにグループを分割できることがわかりました。

datalist <- split(mydata, mydata$group)

しかし、返されたリストはggplot2でうまく機能しません(リスト変数をプロットできないというエラーが表示されます-リスト変数をコンソールに出力すると、分割されたデータサブセットが表示されますか?)。いいよ。しかし、もし私がそうするなら

data = as.data.frame(datalist[1])

そしてそれをggplot2にフィードすると、as.data.frameが列名を台無しにするため、プロットしたい変数の名前が失われます。オー!

私が理想的に望むのは、read.csv によって読み取られた入力データを、ggplot2 が有効なデータ セットとして認識できる 2 つの個別の変数 (データ フレーム、私はそれを取る?) に分割することです。実際には、同じプロットにヒストグラムとして重ねたいと思っています。

これを行う簡単な方法があるはずですが、私はそれを理解していませんか? アドバイスやポインタを歓迎します。

4

2 に答える 2

1

の結果はs のsplit(mydata, mydata$group)alistですdata.frame[との[[表記には違いがあります。 がリストから抽出する[リストをサブセット化します。[[最初datalist[1]の だけで構成される長さ 1 のリストも同様ですdata.framedatalist[[1]]data.frame、最初の位置にある です。ggplot(and qplot) は を想定しているため、data.frame@Alex がコメントで述べたように、2 番目の (二重括弧) バージョンが必要です。見たエラーが発生した理由がわかりません。完全な例がないと診断できません。別のデータ セット ( mtcars) を使用すると、表示されません。

datalist <- split(mtcars, mtcars$am)

ggplot(datalist[[1]], aes(x=wt, y=mpg)) + geom_point()

ここに画像の説明を入力

qplot(wt, data=datalist[[1]], colour="cyan")

ここに画像の説明を入力

(あなたが望んcolour=I("cyan")でいたと思いますが、それは無関係な問題です。)

サブセット化/抽出演算子の違いは次のとおりです。

> str(datalist)
List of 2
 $ 0:'data.frame':      19 obs. of  11 variables:
  ..$ mpg : num [1:19] 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 ...
  ..$ cyl : num [1:19] 6 8 6 8 4 4 6 6 8 8 ...
  ..$ disp: num [1:19] 258 360 225 360 147 ...
  ..$ hp  : num [1:19] 110 175 105 245 62 95 123 123 180 180 ...
  ..$ drat: num [1:19] 3.08 3.15 2.76 3.21 3.69 3.92 3.92 3.92 3.07 3.07 ...
  ..$ wt  : num [1:19] 3.21 3.44 3.46 3.57 3.19 ...
  ..$ qsec: num [1:19] 19.4 17 20.2 15.8 20 ...
  ..$ vs  : num [1:19] 1 0 1 0 1 1 1 1 0 0 ...
  ..$ am  : num [1:19] 0 0 0 0 0 0 0 0 0 0 ...
  ..$ gear: num [1:19] 3 3 3 3 4 4 4 4 3 3 ...
  ..$ carb: num [1:19] 1 2 1 4 2 2 4 4 3 3 ...
 $ 1:'data.frame':      13 obs. of  11 variables:
  ..$ mpg : num [1:13] 21 21 22.8 32.4 30.4 33.9 27.3 26 30.4 15.8 ...
  ..$ cyl : num [1:13] 6 6 4 4 4 4 4 4 4 8 ...
  ..$ disp: num [1:13] 160 160 108 78.7 75.7 ...
  ..$ hp  : num [1:13] 110 110 93 66 52 65 66 91 113 264 ...
  ..$ drat: num [1:13] 3.9 3.9 3.85 4.08 4.93 4.22 4.08 4.43 3.77 4.22 ...
  ..$ wt  : num [1:13] 2.62 2.88 2.32 2.2 1.61 ...
  ..$ qsec: num [1:13] 16.5 17 18.6 19.5 18.5 ...
  ..$ vs  : num [1:13] 0 0 1 1 1 1 1 0 1 0 ...
  ..$ am  : num [1:13] 1 1 1 1 1 1 1 1 1 1 ...
  ..$ gear: num [1:13] 4 4 4 4 4 4 4 5 5 5 ...
  ..$ carb: num [1:13] 4 4 1 1 2 1 1 2 2 4 ...
> str(datalist[1])
List of 1
 $ 0:'data.frame':      19 obs. of  11 variables:
  ..$ mpg : num [1:19] 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 ...
  ..$ cyl : num [1:19] 6 8 6 8 4 4 6 6 8 8 ...
  ..$ disp: num [1:19] 258 360 225 360 147 ...
  ..$ hp  : num [1:19] 110 175 105 245 62 95 123 123 180 180 ...
  ..$ drat: num [1:19] 3.08 3.15 2.76 3.21 3.69 3.92 3.92 3.92 3.07 3.07 ...
  ..$ wt  : num [1:19] 3.21 3.44 3.46 3.57 3.19 ...
  ..$ qsec: num [1:19] 19.4 17 20.2 15.8 20 ...
  ..$ vs  : num [1:19] 1 0 1 0 1 1 1 1 0 0 ...
  ..$ am  : num [1:19] 0 0 0 0 0 0 0 0 0 0 ...
  ..$ gear: num [1:19] 3 3 3 3 4 4 4 4 3 3 ...
  ..$ carb: num [1:19] 1 2 1 4 2 2 4 4 3 3 ...
> str(datalist[[1]])
'data.frame':   19 obs. of  11 variables:
 $ mpg : num  21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 ...
 $ cyl : num  6 8 6 8 4 4 6 6 8 8 ...
 $ disp: num  258 360 225 360 147 ...
 $ hp  : num  110 175 105 245 62 95 123 123 180 180 ...
 $ drat: num  3.08 3.15 2.76 3.21 3.69 3.92 3.92 3.92 3.07 3.07 ...
 $ wt  : num  3.21 3.44 3.46 3.57 3.19 ...
 $ qsec: num  19.4 17 20.2 15.8 20 ...
 $ vs  : num  1 0 1 0 1 1 1 1 0 0 ...
 $ am  : num  0 0 0 0 0 0 0 0 0 0 ...
 $ gear: num  3 3 3 3 4 4 4 4 3 3 ...
 $ carb: num  1 2 1 4 2 2 4 4 3 3 ...
于 2013-07-18T22:55:42.827 に答える