r - 如何使用向量元素作为r中矩阵位置的坐标?
问题描述
我想使用严格由两位数字组成的向量元素作为到特定矩阵位置的映射。例如,考虑以下情况:
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,]
推荐阅读
- excel - 如何合并重复数据并获得最大值
- android - 查找在我的网页视图中加载的网站的语言
- asp.net-core - Gitlab管道总是失败并显示错误消息
- java - 如何使用 Spring Boot 在 Post 方法中传递 Json 数据?我想传递一些变量并在不同的 java 类中使用这些变量
- scala - 有没有办法在scala中实现分层枚举?
- python - [错误]libpng 警告:使用 OpenCV 和 Python 在 ihdr 中的图像宽度为零
- java - Espresso 在 Recyclerview 项目中执行点击查看
- node.js - AWS Lambda - 控制应用程序流程
- android-fragments - 无法解析 androidx.fragment:fragment-testing 的依赖关系
- php - 如何在laravel中检查用户输入