2016-09-22 141 views
0

我想要計算許多向量中的出現次數,並將它們存儲在矩陣R中。例如,我想要矩陣a中的條目,例如a[[1]],a[[2]]等。在一組向量中包含7,8和9的數量的計數。我知道我可以使用table(factor(x, levels=7:9))生成計數,其中x是該集合中的一個向量之一,但是我想預先分配帶有空表的矩陣,因爲我必須有時添加到已存在的上一個表矩陣條目之一。例如,如果a[[10]]當前等於[3 3 1],並且在新的x(其以某種方式對應於第a中的第10個條目),我計數[1 0 1],我希望a[[10]]更新爲[4 3 2]。這可以通過將新計數添加到先前的值而在一行中完成,但是除非我預先分配了包含0的矩陣項,否則我不能在第一次計算對應於a[[10]]xR中空表的矩陣

回答

0

我是通過在我的代碼前面檢查a[[i]]是否爲null。如果是這樣,那麼我做了a[[i]] = table(factor(0, levels=7:9))

0

從描述中看來,'a'listvector s與不同的unique元素。我們可以將vector類更改爲factor,其中levels指定爲unlist ed'a'的uniquesort ed元素。

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

當我們應用table,該水平將是相同的這樣

lapply(a1, table) 

或者,我們可以轉換listdata.frame

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

後一次將 table

這個想法是創造elem與order相同。因此,如果以前的條目也是基於相同的level訂單創建的,我們可以通過+進行求和。