R 列表中表的数据帧

R 列表中表的数据帧,r,R,假设我有一个包含观察结果的列表: 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"

假设我有一个包含观察结果的列表:

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"
但这显然很慢。如何才能更快地做到这一点?我知道
table()
,但由于
foo

的某些元素中存在0个计数,因此我还没有真正了解如何使用它(我不知道):

#将foo转换为因子列表
lfoo或使用重塑:

cast(melt(foo), L1 ~ value, length)[-1]
> 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
# convert foo to a list of factors
lfoo <- lapply(foo, factor, levels=LETTERS[1:6])
# apply table() to each list element
t(sapply(lfoo, table))
     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
cast(melt(foo), L1 ~ value, length)[-1]