r - 如何遍历 nxn 矩阵并将 x 坐标、y 坐标以及值存储到 nx3 矩阵中
问题描述
编写了一个遍历矩阵并返回矩阵中每个非 NA 值的 x 坐标和 y 坐标的脚本。我如何附加此代码以创建附加到坐标的矩阵中每个元素的值的另一列
matrixop = function(m2){
zzz <- NULL
for (i in 1:ncol(m2)){
for (j in 1:nrow(m2)) {
if ((is.na(m2[i,j])) == FALSE ){
}
zzz <- rbind(zzz,c(i,j))
}
}
zzz
}
result = lapply(m1, FUN = matrixop) #m1 being existing nxn matrix
实际结果是一个 nx2 矩阵,其中 x 坐标位于第一列,y 坐标位于第二列。试图获得附加到这些坐标的值的第三列
解决方案
利用which
参数arr.ind
并将cbind
矩阵的值视为向量。缺失值用 删除complete.cases
。
mat2coord <- function(x){
d <- which(x == x | is.na(x), arr.ind = TRUE)
d <- cbind(d, value = c(x))
d[complete.cases(d), ]
}
m <- matrix(1:6, nrow = 3)
mat2coord(m)
# row col value
#[1,] 1 1 1
#[2,] 2 1 2
#[3,] 3 1 3
#[4,] 1 2 4
#[5,] 2 2 5
#[6,] 3 2 6
set.seed(1234)
is.na(m) <- sample(6, 2)
mat2coord(m)
# row col value
#[1,] 1 1 1
#[2,] 3 1 3
#[3,] 2 2 5
#[4,] 3 2 6
推荐阅读
- async-await - Loopback js 连接器使用 async / await
- android - 在 Android 中,奥利奥通知图标颜色为灰色
- airflow - ariflow dag_run 未设置 end_date
- c# - 使用 ODBC 从 Excel 中以字符串形式读取 excel 数据
- c# - 关于 C# 中的泛型和列表方法 Contains()
- python - 使用 PySpark 创建具有空格分隔数据的数据框
- python - 元组列表到字符串列表的转换
- python - 如何在 loader.render_to_string 中发送变量以在 html 中显示它
- r - ggplot2 - 使用具有缺失值的数据制作连续图
- javascript - 检索地点 api 的 json