我想使用严格由两位数数字组成的向量元素作为到特定矩阵位置的映射。例如,考虑以下内容:
mat1 <- rbind(c(12,31,22,13),c(3,1,5,7))
mat <- matrix(rep( 0, len=25), nrow = 5)
我想做的是用于mat1[1,1]
访问位置1 2在mat
,并且在该位置,我想存储3的对应值。我尝试过将mat1's
元素转换为字符串,拆分,存储它们,在存储它们as.numeric()
的向量上调用该函数并最终运行一个循环,尽管最终使它起作用,但现在我已经有近一百万次循环在我的程序中。我将不胜感激!
我们可以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,]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句