2
假設我有一個觀察名單:數據幀
foo <- list(c("C", "E", "A", "F"), c("B", "D", "B", "A", "C"), c("B",
"C", "C", "F", "A", "F"), c("D", "A", "A", "D", "D", "F", "B"
))
> foo
[[1]]
[1] "C" "E" "A" "F"
[[2]]
[1] "B" "D" "B" "A" "C"
[[3]]
[1] "B" "C" "C" "F" "A" "F"
[[4]]
[1] "D" "A" "A" "D" "D" "F" "B"
並與每個獨特元素的矢量:
vec <- LETTERS[1:6]
> vec
[1] "A" "B" "C" "D" "E" "F"
我想獲得與計數數據幀foo
的每個元素中的每個元素vec
。我可以在一個非常醜陋的unvectorized方式與plyr
做到這一點:
> ldply(foo,function(x)sapply(vec,function(y)sum(y==x)))
A B C D E F
1 1 0 1 0 1 1
2 1 2 1 1 0 0
3 1 1 2 0 0 2
4 2 1 0 3 0 1
但是,這顯然是緩慢的。這怎麼能更快地完成?我知道table()
,但由於在foo
的某些元素中有0計數,所以還沒有真正想到如何使用它。
完美,謝謝! –