ジョランのコメントを拡張するには、次のことを考慮してください。
> is.vector(state.x77[,"Population"])
[1] TRUE
> is.matrix(state.x77[,"Population"])
[1] FALSE
したがって、あなたのデータは、列も行も持たないPopulation
のような他のベクトルと何ら変わりはありません。これは、高度な構造や次元を持たない単なる一連の数字です。例えば1:10
apply
> apply(1:10,2,mean)
Error in apply(1:10, 2, mean) : dim(X) must have a positive length
つまり、mean
選択した行列サブセットに対して関数を直接使用できます。例:
> mean(1:10)
[1] 5.5
> mean(state.x77[,"Population"])
[1] 4246.42
「アトミック」ベクトルをさらに説明するには、R の FAQ をもう一度参照してください (これは少し複雑になるので、帽子をかぶってください)...
R には、論理、整数、実数、複素数、文字列 (または文字)、生の 6 つの基本的な (「アトミック」) ベクトル型があります。
http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Vector-objects
したがって、この場合のアトミックとは、ベクトルを R オブジェクトの基本的なビルディング ブロックとして参照することです (アトムが現実世界のすべてを構成するように)。
コマンドとして入力して R のインライン ヘルプを読むと、次のように表示?"$"
されます。
「$」は再帰オブジェクトに対してのみ有効であり、再帰オブジェクトに関する以下のセクションでのみ説明されています。
ベクトル ( など1:10
) は基本的なビルディング ブロック (「アトミック」) であり、再帰的なサブ要素がないため、使用$
してそれらの一部にアクセスしようとしても機能しません。
あなたの行列 ( statex.77
) は基本的に次のようないくつかの次元を持つ単なるベクトルであるため:
> str(matrix(1:10,nrow=2))
int [1:2, 1:5] 1 2 3 4 5 6 7 8 9 10
$
...サブパーツへのアクセスにも使用できません。
> state.x77$Population
Error in state.x77$Population : $ operator is invalid for atomic vectors
[
ただし、次のように名前を使用してサブパーツにアクセスできます。
> state.x77[,"Population"]
Alabama Alaska Arizona...
3615 365 2212...