0

ビニングした非常に大きなデータセットがあり、各ビン(サブセット)をリストとして保存しているので、任意のサブセットを簡単に呼び出すことができます。私の問題は、サブセット内の特定の列を呼び出すことです。

たとえば、私のデータ(列として直径と強度を持っている)は、直径ごとに20のビンに分割されています。次のように、データを手動でビニングしました。

subset.1 <- subset(mydata, Diameter <= 0.01)

同様のコマンドを使用して、20個のビンを作成しました。次に、名前(subset.1からsubset.20)をリストに保存しました。

diameter.bin<-list(subset.1, ... , subset.20)

以下を使用して、各直径ビンを正常に呼び出すことができます。

diameter.bin[x]

これで、特定の直径ビンの強度値のみを表示したい場合は、元の名前(つまり、リストに格納されている)を使用できます。

subset.x$Strength

しかし、リスト呼び出しを使用してこの情報を取得することはできません。

diameter.bin[x]$Strength

このコマンドはNULL

サブセットを(diameter.bin[x]subset.xまたはでさえsubset.x$Strength)呼び出すと、列ヘッダーが表示されることに注意してください。私が使用するとき:

names(subset.1)

これは戻り"Diameter""Strength"

しかし、私が使用するとき:

names(diameter.bin[1])

これはを返しますNULL

列ヘッダーが問題の一部であると想定していますが、元のデータファイルからヘッダーを削除する以外に、修正方法がわかりません。可能であれば、これは行わない方がいいと思います。

最終目標は、各直径ビンの強度値の分布を確認することです。そのため、ヒストグラムの描画、パラメーターの計算などを行います。これらの線に沿って何かを実行して、ヒストグラムを作成したいと考えていました。

n=length(diameter.bin)
for(i in (1:n))
{
  hist(diameter.bin[i]$Strength)
}

そして、これと同様のことを行って、各ビンの中央値を新しいベクトルに格納します。

現在、一度に1ビンすべてを実行しているので、ヒントは大歓迎です。ループ(または同様のもの)を使用すると、分析が実際に高速化されることがわかっています。

4

1 に答える 1

4

2つの角かっこが必要です。これは、問題を示す再現可能な例です。

> diam <- data.frame(x=rnorm(5), y=rnorm(5))
> 
> diam.l <- list(diam, diam)
> diam.l[1]$x
NULL
> diam.l[[1]]$x
[1] -0.5389441 -0.5155441 -1.2437108 -2.0044323 -0.6914124
于 2013-03-11T18:33:55.560 に答える