r - 从栅格/数据框创建有效的随机采样掩码
问题描述
对于空间数据分析,我必须从栅格文件中随机抽取像素。~100 个像素具有相同的值,我想随机取其中一个,我总共有 ~180 000 个唯一值/18 个 Mio 像素。我有一个解决方案,但它的工作效率很低(现在运行了近 20 个小时,而且只有 ~1/3),而且我想运行多个测试,如果有人能给我一个提示,我会很高兴更高效的解决方案!到目前为止我的代码:
# create data frame of index layer; r.index is a raster file
df.index <- as.data.frame(r.index)
names(df.index)[1] <- "index"
head(df.index)
# get number of different indices
n <- maxValue(r.index)
#create data frame to fill in the randomly chosen indices of df.index
df.index.sample <- data.frame(c(1:n))
names(df.index.sample)[1] <- "index_number"
df.index.sample["index"] <- NA
for (i in 1:n){
index.i <- which(df.index==i)
index.i.sample <- sample(index.i, 1)
df.index.sample[i,2] <- index.i.sample
}
df.index.sample.r <- df.index
df.index.sample.r[1] <- NA
df.index.sample.r[df.index.sample$index_numbers] <- df.index.sample$index_numbers
r.index.sample <- r.index
r.index.sample[,] <- NA
r.index.sample <- setValues(r.index.sample, df.index.sample.r)
非常感谢!
解决方案
推荐阅读
- c# - 为什么 DataTable.Rows[i].Delete() 和 DataSet.AcceptChanges() 似乎都没有触发 DataRelation?
- javascript - 沿道路曲线旋转位置标记并将旋转角度值存储在 Firebase 实时数据库中
- r - 创建一个带有闪亮的条形图,每次选择一个区域时都会显示一个新图
- c# - 如何在 .NET CORE 2.2 中翻译特定文件夹结构中的文件
- autodesk-forge - 我们可以从 forge viewer API 访问 Revit Material Takeoff 使用的数据吗?
- python - 使用 selenium 驱动程序和 Instagram 登录查找元素的问题
- c++ - 是否可以创建比屏幕更大的 Windows 终端?C++
- csv - Apache Spark 直接查询 Splunk 搜索结果
- git - 通过 git stash apply 覆盖
- android-studio - 居中 TextInputLayout 结束图标