R 从光栅/数据帧创建有效的随机采样掩码

R 从光栅/数据帧创建有效的随机采样掩码,r,dataframe,raster,R,Dataframe,Raster,对于空间数据分析,我必须从光栅文件中随机采样像素~100个像素有相同的值,我想随机取一个,我总共有18万个唯一值/18百万像素。我有一个解决方案,但效果很差(现在运行了近20个小时,只有~1/3),因为我想运行多个测试,如果有人能给我一个更有效的解决方案的提示,我会很高兴! 到目前为止,我的代码是: # create data frame of index layer; r.index is a raster file df.index <- as.data.frame(r.index)

对于空间数据分析,我必须从光栅文件中随机采样像素~100个像素有相同的值,我想随机取一个,我总共有18万个唯一值/18百万像素。我有一个解决方案,但效果很差(现在运行了近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)
#创建索引层的数据帧;r、 索引是一个光栅文件

我不明白你在找什么。是否希望100个单元格中有1个具有相同的值?无论哪种方式,您都可以编辑您的问题,并包含一个独立的、最小的、可复制的示例——使用一个小光栅(就像在R帮助文件和本网站上的大多数问题中所做的那样)。这将使你更容易解释你想要什么,并让其他人提出解决方案。