首页 > 解决方案 > 存储非 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]]
}

标签: r

解决方案


推荐阅读