9

ベクトル内の要素の頻度をカウントする頻度表があります

a = table(c(0,1,1,1,0,2,2,4,1,2,3,2,1,2,3,1,1,1,2,3,4,1,1,0))
a
#  0  1  2  3  4 
#  3 10  6  3  2

名前で名前にアクセスできることを知っています(a)。しかし、SECOND行の値にアクセスしようとしたとき

a[1, "0"]
# Error in a[1, "0"] : incorrect number of dimensions

a[1, 1]
# Error in a[1, 1] : incorrect number of dimensions
4

4 に答える 4

12

このテーブルは実際には配列です。

x <- c(0,1,1,1,0,2,2,4,1,2,3,2,1,2,3,1,1,1,2,3,4,1,1,0)
(a <- table(x))
#
# 0  1  2  3  4 
# 3 10  6  3  2 
class(unclass(a))
# [1] "array"

その名前は上に、値は下に表示されます。

names(a)
[1] "0" "1" "2" "3" "4"

その要素にはさまざまな方法でアクセスできます。

a[1]                     ## access named element by index
# 0 
# 3
a[[1]]                   ## access unnamed element by index
# [1] 3
a["0"]                   ## access named element by name
# 0 
# 3 
a[["0"]]                 ## access unnamed element by name
# [1] 3
as.vector(a)             ## as.vector() drops table down to unnamed vector
# [1]  3 10  6  3  2
c(a)[2:4]                ## c() drops table down to named vector
#  1  2  3 
# 10  6  3 
class(a[2:4])
# [1] "array"
class(c(a)[2:4])
# [1] "integer"

の最後の数行で設定されているnrowand属性もあります。dimtable

y <- array(tabulate(bin, pd), dims, dimnames = dn)
class(y) <- "table"

nrow(a)なぜ5なのかはよくわかりませんa[1,]が、エラーが返されます。

于 2014-11-27T02:07:14.107 に答える
4

このtable()コマンドは、行列や data.frame ではなく、名前付きのベクトルを返しています。ゼロの数にアクセスしたい場合は、次のようにします

a["0"]

名前付きベクトルの名前は文字でなければならないため、レベルの数値プロパティが失われることに注意してください。必要に応じて、それらを元に戻すことができas.numeric(names(a))ます

于 2014-11-27T02:08:17.053 に答える
2

使用しているテーブルは 1 次元配列であり、2 次元を使用して要素を取得しているため、そのエラーが発生しています。

[1]のようなものを使用してください

于 2014-11-27T03:24:00.053 に答える