gpt4 book ai didi

r - 将列表复杂地重新排列为矩阵

转载 作者:行者123 更新时间:2023-12-04 05:39:27 25 4
gpt4 key购买 nike

抱歉标题含糊不清。此外,一个例子值一千字。

我有一个 list :

> lst<-list(A=c("one","two", "three"), B=c("two", "four", "five"), C=c("six", "seven"), D=c("one", "five", "eight"))

> lst
$A
[1] "one" "two" "three"

$B
[1] "two" "four" "five"

$C
[1] "six" "seven"

$D
[1] "one" "five" "eight"

我想重新排列成以下矩阵:
> m
A B C D
one 1 0 0 1
two 1 1 0 0
three 1 0 0 0
four 0 1 0 0
five 0 1 0 1
six 0 0 1 0
seven 0 0 1 0
eight 0 0 0 1

其中,基本上,每个坐标表示每个列表元素中每个列表值的存在 (1) 或不存在 (0)。

我尝试弄乱 as.data.frame()、unlist()、table() 和melt() 的各种组合,但没有成功,因此非常感谢任何指向正确方向的指针。

我想我的最后手段是一个嵌套循环,它遍历列表元素,然后将 0 或 1 分配给矩阵中的相应坐标,但这似乎过于复杂。
for (...) { 
for (...) {
if (...) {
var <- 1
} else {
var <- 0
}
}
}

谢谢!

最佳答案

library(reshape2)

table(melt(lst))
# L1
#value A B C D
# one 1 0 0 1
# three 1 0 0 0
# two 1 1 0 0
# five 0 1 0 1
# four 0 1 0 0
# seven 0 0 1 0
# six 0 0 1 0
# eight 0 0 0 1

关于r - 将列表复杂地重新排列为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com