从r中的多个列表生成二进制(存在/不存在)数据矩阵 [英] make binary (presence/absence) data matrix from multiple lists in r
本文介绍了从r中的多个列表生成二进制(存在/不存在)数据矩阵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
data1 <- c("a", "b", "c", "d", "e", "f")
data2 <- c("e", "f", "g")
data3 <- c("a", "c", "g")
我的最终结果我想创建一个二进制存在/缺席矩阵,如下所示,这样我就可以创建一个图形(类似于热图)来显示它。
data1 data2 data3
a 1 0 1
b 1 0 0
c 1 0 1
d 1 0 0
e 1 1 0
f 1 1 0
g 0 1 1
我对R还是新手,所以希望我的解释是正确的。谢谢你的帮助。
推荐答案
splitstackshape
包中有一个名为charMat
的帮助器函数,您可能希望尝试一下
dat <- paste0("data", 1:3)
out <- t(splitstackshape:::charMat(listOfValues = mget(dat), fill = 0L))
colnames(out) <- dat
out
# data1 data2 data3
#a 1 0 1
#b 1 0 0
#c 1 0 1
#d 1 0 0
#e 1 1 0
#f 1 1 0
#g 0 1 1
数据
data1 <- c("a", "b", "c", "d", "e", "f")
data2 <- c("e", "f", "g")
data3 <- c("a", "c", "g")
说明
该函数需要list
作为第一个参数。我们可以使用mget
创建该列表
mget(dat)
#$data1
#[1] "a" "b" "c" "d" "e" "f"
#$data2
#[1] "e" "f" "g"
#$data3
#[1] "a" "c" "g"
其中dat
是包含输入数据名称的字符矢量
dat
#[1] "data1" "data2" "data3"
t
用于转置charMat
的输出。
希望这能有所帮助。
这篇关于从r中的多个列表生成二进制(存在/不存在)数据矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文