我在 R 中有一个带有标签的大列表。示例:
[[1]]
[1] "A" "C" "E" "F"
[[2]]
[1] "B" "C" "G"
[[3]]
[1] "A"
[[4]]
[1] "B"
[[5]]
[1] "C" "E"
[[6]]
[1] "G"
我需要用两个值构建一个表:1/(-1),表示行是否有标签 (1) 或没有标签 (-1)。
"A" "B" "C" "E" "F" "G"
[1] 1 -1 -1 1 1 -1
[2] -1 1 1 -1 -1 1
[3] 1 -1 -1 -1 -1 -1
[4] -1 1 -1 -1 -1 -1
[5] -1 -1 1 1 -1 -1
[6] -1 -1 -1 -1 -1 1
最佳答案
这是适合您的方法。
首先,我们命名我们的列表(否则我们不能使用stack
):
names(dat) <- 1:length(dat)
然后我们把它变成长:
dat2 <- stack(dat)
现在制作我们的 table 很容易:
res <- with(dat2, table(ind, values))
res[res==0]<--1
>res
values
ind A B C E F G
1 1 -1 1 1 1 -1
2 -1 1 1 -1 -1 1
3 1 -1 -1 -1 -1 -1
4 -1 1 -1 -1 -1 -1
5 -1 -1 1 1 -1 -1
6 -1 -1 -1 -1 -1 1
使用的数据:
dat <- list(c("A","C","E","F"),c("B","C","G"),"A","B",c("C","E"),"G")
关于r - 从 R 中的标签列表列表创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36866433/