分割数据帧以运行循环后,“维数不正确”

时间:2017-03-01 15:43:08

标签: r loops split

我几个小时后就陷入了剧本,我无法解决问题。这是我的目标:我有143个样方的大量坐标和高程数据集(在样方中包含40到50个观测值)。我想提取每个样方的平均斜率和方位。我知道如何从GIS的角度出发,我的脚本完全适用于整个情节。

我首先将数据集拆分为143个数据帧。然后我为每个quadrat运行一个循环,我总是得到相同的错误信息:“split [i,2:3]中的错误:维度数不正确”。问题当然来自于我编写循环的方式或者我使用“[]”“[[]]”的方式。

任何人都知道问题出在哪里? 非常感谢!

data = read.table("Coordinates_elevation.txt", sep = "\t")
quad = data[,1]
X = data[,2]
Y = data[,3]
Z = data[,4]

results = as.data.frame(matrix(nrow = length(split), ncol = 3))
row.names(results) = names(split)
colnames(results) <- c('Elevation', 'Slope', 'Aspect')

data = matrix(c(quad,X,Y,Z),  ncol=4,  byrow=FALSE)
data=as.data.frame(data)
e = extent(data[,2:3])
r=raster(e, ncol=33, nrow=6, crs = CRS("+init=epsg:31300"))

split = split(data, quad)

for (i in 1:length(split)){
  x = rasterize(split[i,2:3], r, split[i,4], fun=mean)
  slope_asp=terrain(x, opt=c('slope', 'aspect'), unit='degrees',neighbors=8)
  slope = slope_asp$slope[[i]]
  results[i,2] = slope
  aspect=slope_asp$aspect[[i]]
  results[i,3] = aspect
  elevation = split[i,4]
  results[i,1]=elevation
}

拆分[i,2:3]时出错:维数不正确

write.table(results, "results_slopeaspect.txt", sep = "\t")

0 个答案:

没有答案