【问题标题】:How can I get elements from the "A" matrix in R如何从 R 中的“A”矩阵中获取元素
【发布时间】:2021-08-04 05:24:37
【问题描述】:

我想知道是否有任何方法(我确定是)来获取 R中的加法关系矩阵A。 我已经有了谱系,并且通过不同的方式成功地获得了 A 矩阵:

  1. 通过使用 pedigree 包中的函数 makeA:
library(pedigree)
makeA(pedigree_renum, which = pedigree_renum$ID=="1-2372") #for all the animals
#> [1] TRUE

但我无法从矩阵中获取元素

  1. 通过使用 peigreemm 包中的函数 getA。在这种情况下,我得到 2372*2372 A 矩阵:
class(pedigree_general)
#> [1] "pedigree"
attr(,"package")
#> [1] "pedigreemm"
matrizA<-getA(pedigree_general)
class(matrizA)
#> [1] "dsCMatrix"
attr(,"package")
#> [1] "Matrix"

但我不知道如何保存矩阵中的某些元素,例如上对角线元素。

希望你们中的一些人能帮助我解决这个问题! 欢迎使用不同的方法来获得相同的结果:)

来自布宜诺斯艾利斯的问候。

【问题讨论】:

    标签: r sparse-matrix


    【解决方案1】:

    来自 Pedigree 在 makeA 上的文档:

    为谱系的一部分制作 A 矩阵并将其存储在名为 A.txt

    的文件中

    如果我没记错的话,您错过的是您正在搜索的矩阵应该从文件A.txt 加载,该文件是命令的输出文件。示例:

    id <- 1:6
    dam <- c(0,0,1,1,4,4)
    sire <- c(0,0,2,2,3,5)
    ped <- data.frame(id,dam,sire)
    makeA(ped,which = c(rep(FALSE,4),rep(TRUE,2)))
    A <- read.table("A.txt")
    

    打印A后,这里是矩阵:

    如果我遗漏了什么,请告诉我。

    【讨论】:

    • 我会试一试,让你知道它是否有效。谢谢!!
    • 你是绝对正确的,所以通过阅读这篇文章,我意识到我的错误是逻辑向量表明我请求 A 矩阵的哪些动物:which = pedigree_renum$ID=="1-2372" how我可以要求 R 考虑所有的动物吗?
    • 看这个:运行代码后它显示 > id dam Sire ped A print(A) [1] 是的,我不知道出了什么问题。我无法获得您展示的矩阵,而这正是我的 2372 只动物所需要的!
    • 您不应该将makeA 的返回值分配给变量A。它是从文件A.txt 中获取的,因此A &lt;- read.table("A.txt")(其中A.txtmakeA 创建)是使矩阵被读入R 的原因。更清楚地说,makeA 不会返回矩阵,而是将其保存在文件 A.txt 中,因此需要在makeA 命令之后读取。
    • 非常感谢。我了解了 makeA 的工作原理,现在我有了我的 A 矩阵!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多