2

経験豊富なコーダーならおそらく簡単に答えられる、非常に基本的な質問があります。
いくつかのデータ列があります。x1を介してそれらをベクトルに変換しx9ました。
次のようにテーブル関数を実行しました。

table(x1,x2) 

私の質問は:

table(x1,x2)次のようなテーブルのグループを作成するにはどうすればtable(x1,x3)よいtable(x1,x4)ですか? これには適用機能が含まれていると思われますが、機能させることができませんでした。

4

2 に答える 2

3

lapply次のように使用できます。

# First, some sample data
set.seed(1)
yo = data.frame(x1 = sample(letters[1:5], 20, replace=TRUE),
                x2 = sample(0:2, 20, replace=TRUE),
                x3 = sample(0:2, 20, replace=TRUE),
                x4 = sample(0:2, 20, replace=TRUE))
lapply(2:ncol(yo), function(x) table(yo[, 1], yo[, x]))

バープロットを取得するには、その出力を保存してlapplyと をbarplot一緒に使用するか、次のようにすることができます。

par(mfrow = c(3, 1)) # To plot them all at once...
lapply(2:ncol(yo), function(x) barplot(table(yo[, 1], yo[, x]), 
                                       beside=TRUE, legend=TRUE))

プロットの例を次に示します。必要に応じて、「きれいにする」ためにさらに多くのカスタマイズを行うことができます。

ここに画像の説明を入力

于 2012-08-22T02:36:22.913 に答える
2

lapply を使用して、リストの要素を関数にシリアルに渡します。mrdwab のベクトルを に使用table:

x1 = sample(letters[1:5], 20, replace=TRUE)
x2 = sample(0:2, 20, replace=TRUE)
x3 = sample(0:2, 20, replace=TRUE)
x4 = sample(0:2, 20, replace=TRUE)

lapply(list(x2,x3,x4), table, x1)
[[1]]
   x1
    a b c d e
  0 0 1 2 2 2
  1 1 1 0 2 0
  2 4 2 1 1 1

[[2]]
   x1
    a b c d e
  0 1 2 1 2 1
  1 3 0 0 2 2
  2 1 2 2 1 0

[[3]]
   x1
    a b c d e
  0 2 2 0 3 3
  1 2 2 2 0 0
  2 1 0 1 2 0

Barplot は文字ベクトルでは機能しないため、ttmaccer のベクトルでは同じアプローチが機能します。

X1<-1:10
X2<-2:11
X3<-3:12
X4<-4:13
lapply(list(X1,X2,X3,X4), barplot)
于 2012-08-22T02:55:57.053 に答える