r - 展开矩阵并在R中按键替换行名和列名
问题描述
我正在运行一个线性混合模型,其中包含来自相关个人的数据和来自同一个人的多个样本。我有一个亲属关系矩阵,每个人都有一个亲属关系 ID。亲属关系 ID 与模型正在分析的化验 ID 不同。我需要创建一个亲属关系矩阵,每个检测 ID 有一行/列,而不是每个亲属关系 ID 有一行/列。
key = data.frame(assay_id = c("aid_1","aid_2","aid_3","aid_4","aid_5","aid_6"), kinship_id = c("kid_1","kid_2","kid_2","kid_3","kid_3","kid_4"))
key
start_kin = data.frame(kid_1 = c(1,0.25,0,0.5), kid_2= c(0.25,1,0,0.5), kid_3 = c(0,0,1,0.25), kid_4= c(0.5,0.5,0.25,1) )
rownames(start_kin) =c("kid_1","kid_2","kid_3","kid_4")
start_kin
intermediate_kin = start_kin
intermediate_kin$kid_2a = intermediate_kin$kid_2
intermediate_kin$kid_3a = intermediate_kin$kid_3
intermediate_kin["kid_2a",] = intermediate_kin["kid_2",]
intermediate_kin["kid_3a",] = intermediate_kin["kid_3",]
intermediate_kin
final_kin = intermediate_kin
rownames(final_kin) = c("aid_1","aid_2","aid_4","aid_6","aid_3","aid_5")
names(final_kin) = c("aid_1","aid_2","aid_4","aid_6","aid_3","aid_5")
final_kin
解决方案
根据您的描述,我不确定您到底想做什么。这是基于我的猜测的代码示例。在这里,每个亲属都有 3 次检测。
kin <- letters[1:4]
assay <- 1:3
dat <- expand.grid(kin = kin, assay = assay)
dat <- apply(dat, 1, paste0, collapse = "-")
n <- length(dat)
m <- matrix(rep(0, n * n), nrow = n)
rownames(m) <- dat
colnames(m) <- dat
m
# a-1 b-1 c-1 d-1 a-2 b-2 c-2 d-2 a-3 b-3 c-3 d-3
# a-1 0 0 0 0 0 0 0 0 0 0 0 0
# b-1 0 0 0 0 0 0 0 0 0 0 0 0
# c-1 0 0 0 0 0 0 0 0 0 0 0 0
# d-1 0 0 0 0 0 0 0 0 0 0 0 0
# a-2 0 0 0 0 0 0 0 0 0 0 0 0
# b-2 0 0 0 0 0 0 0 0 0 0 0 0
# c-2 0 0 0 0 0 0 0 0 0 0 0 0
# d-2 0 0 0 0 0 0 0 0 0 0 0 0
# a-3 0 0 0 0 0 0 0 0 0 0 0 0
# b-3 0 0 0 0 0 0 0 0 0 0 0 0
# c-3 0 0 0 0 0 0 0 0 0 0 0 0
# d-3 0 0 0 0 0 0 0 0 0 0 0 0
推荐阅读
- python - 如何从带有列表的 pandas DataFrame 创建一个绘图线图
- android - 在suspendCancellableCoroutine中取消回调
- qt - 当获得由其他 returnPressed 信号触发的焦点时,QLineEdit 发出 returnPressed
- python - 在弱光图像中应用高斯模糊和 Canny 边缘检测后的白线检测
- go - Excelize 冻结行生成有错误的文件
- dictionary - 字典数学 Python
- python - discord.py - 添加反应作为命令的一部分
- node.js - Nodejs 在对安全端点的 GET 调用中抛出 EPROTO 错误
- vb.net - 漂亮的清单删除了继续符 (_) -> 编译器中的错误 BC30201 [Visual Studio 2019]
- java - 限制和分组流