【问题标题】:How to use vector elements as coordinates for matrix positions in r?如何使用向量元素作为r中矩阵位置的坐标?
【发布时间】:2020-05-15 23:30:51
【问题描述】:

我想使用严格由两位数字组成的向量元素作为到特定矩阵位置的映射。例如,考虑以下内容:

mat1 <- rbind(c(12,31,22,13),c(3,1,5,7))
mat <- matrix(rep( 0, len=25), nrow = 5)

我想做的是使用mat1[1,1] 访问mat 的位置1 2,并且在该位置,我希望存储对应的值3。 我尝试将mat1's 元素转换为字符串,拆分它们,存储它们,在存储它们的向量上调用as.numeric() 函数,最后运行一个循环,虽然我最终让它工作了,但我现在我的程序中有近一百万个循环。如有任何想法,我将不胜感激!

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以strsplit'mat'的第一行,将其转换为行/列索引,并用它来分配'mat'的对应元素和'mat1'的第二行

    i1 <- do.call(rbind, lapply(strsplit(as.character(mat1[1,]),""), as.numeric))
    mat[i1] <- mat1[2,]
    mat
    #     [,1] [,2] [,3] [,4] [,5]
    #[1,]    0    3    7    0    0
    #[2,]    0    5    0    0    0
    #[3,]    1    0    0    0    0
    #[4,]    0    0    0    0    0
    #[5,]    0    0    0    0    0
    

    substr

    m1 <- mat1[1,]
    i1 <- cbind(as.integer(substr(m1, 1, 1)), as.integer(substr(m1, 2, 2)))
    mat[i1] <- mat1[2,]
    

    【讨论】:

    • 工作速度比我最初的解决方案快得多。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-01-04
    • 2021-12-04
    • 2011-09-25
    • 1970-01-01
    • 2015-04-15
    • 2013-02-05
    • 2018-10-10
    • 2013-05-14
    相关资源
    最近更新 更多