【问题标题】:How to create a list of matrix in R如何在R中创建矩阵列表
【发布时间】:2012-11-25 18:04:02
【问题描述】:

我想创建一个二维矩阵列表

> x
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

> y
     [,1] [,2]
[1,]  301  306
[2,]  302  307
[3,]  303  308
[4,]  304  309
[5,]  305  310

> MATS<-c(x,y)

> MATS[1]
[1] 1

我希望能够引用 MATS[1],就好像它在哪里 x...

【问题讨论】:

    标签: r list matrix


    【解决方案1】:

    试试

    x <- matrix(1:10, ncol=2)
    y <- x+300
    
    MATS <- list(x, y) # use 'list' instead of 'c' to create a list of matrices
    MATS
    [[1]]
         [,1] [,2]
    [1,]    1    6
    [2,]    2    7
    [3,]    3    8
    [4,]    4    9
    [5,]    5   10
    
    [[2]]
         [,1] [,2]
    [1,]  301  306
    [2,]  302  307
    [3,]  303  308
    [4,]  304  309
    [5,]  305  310
    

    这里你必须引用MATS[[1]],就好像它是x

    如果您想在现有列表中添加一个新矩阵,请尝试

    z <- x+500
    MATS[[3]] <- z  # appeding a new matrix to the existing list
    MATS
    
    [[1]]
         [,1] [,2]
    [1,]    1    6
    [2,]    2    7
    [3,]    3    8
    [4,]    4    9
    [5,]    5   10
    
    [[2]]
         [,1] [,2]
    [1,]  301  306
    [2,]  302  307
    [3,]  303  308
    [4,]  304  309
    [5,]  305  310
    
    [[3]]
         [,1] [,2]
    [1,]  501  506
    [2,]  502  507
    [3,]  503  508
    [4,]  504  509
    [5,]  505  510
    

    这种方法的一个缺点是你必须知道你必须在列表中添加新矩阵的位置,如果你不知道,或者只是你不想要这种方法,那么这里有一个技巧:

    unlist(list(MATS, list(z)), recursive=FALSE) # will give u the same list :D
    

    【讨论】:

    • @jiber 谢谢。如果我想将另一个矩阵附加到列表中?请问语法是什么?我循环执行此操作。
    • @Jilber 谢谢。从文本或 csv 文件中读取这样的内容怎么样?
    • 有没有办法一次读取所有矩阵的第二列?
    • @vk087 正在寻找这样的东西...lapply(MATS, function(x) x[,2,drop=FALSE])?
    猜你喜欢
    • 2015-07-12
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    相关资源
    最近更新 更多