2016-09-22 4 views
0

多くのベクトルの出現回数を数えてRの行列に格納しようとしています。たとえば、、a[[2]]などのように行列のエントリをaにしたいとします。 1組のベクトルに7、8、および9の数を数えます。私はtable(factor(x, levels=7:9))を使用してカウントを生成できることを知っています。xはセット内のベクトルの1つですが、空のテーブルをあらかじめ割り当てておきたいのですが、時にはすでに存在する前のテーブルに追加する必要があるからです行列エントリの1つ。たとえば、a[[10]]が現在[3 3 1]に等しく、新しいx(これは何とかaの10番目のエントリに相当します)の場合、[1 0 1]とカウントします。a[[10]][4 3 2]に更新したいとします。これは、以前の値に新しいカウントを追加するだけで1行で行うことができますが、a[[10]]に対応するxに最初にカウントすると、0を含むようにマトリックスエントリをあらかじめ割り当てていない限りできません。空のテーブルの行列R

答えて

0

a[[i]]nullの場合は、私のコードに先行するだけでこれを行いました。もしそうなら、私はa[[i]] = table(factor(0, levels=7:9))でした。

0

説明から、 'a' listのように、異なるunique要素を持つvectorがあるようです。 vectorクラスをfactorに変更することができます。levelsuniquesort edエレメントのunlist ed 'a'から指定されています。我々はtableを適用すると、レベルはこのよう

lapply(a1, table) 

それとも我々はdata.frame

table(stack(setNames(a1, seq_along(a1)))[2:1]) 

listを変換した後に一度 tableを適用することができますで同じになります

lvls <- sort(unique(unlist(a))) 
a1 <- lapply(a, function(x) factor(x, levels = lvls)) 

考えられるのは、elem同じorderのents。したがって、前のエントリも同じlevelオーダーに基づいて作成されている場合は、合計を+で行うことができます。