r - 存储非 NA 元素的位置和值
问题描述
我有一个由具有相当多 NA 的矩阵组成的数据集。由此,我想创建一个存储非 NA 值的位置和值的数据框。通过此答案 which
可用于获取位置,通过tempList <- which(!is.na(dummy),TRUE)
. 目前我之后使用for循环。有没有更好的方法来添加值?
数据:
structure(c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, "#000000FF", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "#000000FF", NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(10L,
10L))
期望的结果:
structure(list(x = c(8, 7), y = c(5, 7), colour = structure(c(1L,
1L), .Label = "#000000FF", class = "factor")), class = "data.frame", row.names = c(NA,
-2L))
当前代码:
tempList <- which(!is.na(dummy),TRUE)
changedDF <- data.frame(tempList[,1],tempList[,2])
names(changedDF) <- c("row","column")
for(i in 1:nrow(changedDF)){
changedDF$colour[i] <- dummy[changedDF[i,1],changedDF[i,2]]
}
解决方案
推荐阅读
- javascript - 在 VueX 中存储 JSON 结构
- android - spannablestring 不加粗文本
- c - TCP头值初始化
- javascript - 异步功能不会第二次弹出
- haskell - 关于可能的缩进错误的 Haskell 错误
- docker - 两个类似的 docker-compose 文件没有给出相同的结果
- javascript - 在 Vue.js 中使用 V-for 和 V-if 在条件下显示 JSON 数据
- google-chrome-extension - Chrome 扩展选择文件夹进行多次下载
- c# - 使用 C# 驱动程序更新 MongoDB 中的多项数组
- android - 如何设置它,以便在底部工作表展开时,底部工作表行为顶部的布局动态改变其高度?