【问题标题】:R (Loop) Error in data frame, replacement has x rows, data has y rowsR(循环)数据帧中的错误,替换有x行,数据有y行
【发布时间】:2016-12-30 07:46:18
【问题描述】:

所以我正在开展一个项目,该项目需要我使用 30 多天/文件中给出的空气质量数据创建多个图。

我从一个已经做过的人那里学习和复制,但不知何故,我在将它与我拥有的数据集成时遇到了问题,感谢任何帮助。

代码如下:

#---START OF THE FOR LOOP---
all_dates = seq(begin_date, end_date, 1)
for (j in 1:length(all_dates)) {
  selected_date = all_dates[j]

  #read data from the file with (id, lat, lon, elev, value... enter your attributes here) columns
  datapointfile = paste(variable,"_",aggregate,"_",format.Date(selected_date,"%Y-%m-%d"),".txt",sep="")

  datapoints_wgs84 = read.table(datapointfile, header=TRUE)
  coordinates(datapoints_wgs84) = ~lon + lat
  proj4string(datapoints_wgs84) <- CRS("+init=epsg:4326")
  datapoints <- spTransform(datapoints_wgs84, CRS(projection))

  #INTERPOLATION STARTS HERE!

  #calculate linear regression intercept and slope(observ=B+A*elev)
  observlm <- lm(value ~ elev, datapoints)
  datapoints$res = observlm$residuals

  #calculate observ value raster using linear model (elevation / observ value)
  intercept = observlm$coefficients[1]
  slope = observlm$coefficients[2]
  regression_grid <- intercept + srtm * slope


  #interpolate the residuals using idw
  idw_test = idw(res~1, datapoints, defaultgrid)
  residual_grid = raster(idw_test, "var1.pred")

  #add regression grid and residuals
  finalgrid <- regression_grid + residual_grid

  #INTERPOLATION ENDS HERE!


  #START OF THE PLOT!  
  layout = list(vrstvastudyarea)
  outfile = paste("Output", selected_date, ".png", sep="")
  png(filename = outfile, width = 1500, height = 1000, pointsize = 25, bg = "white", res = 150)
  nadpis = paste("Air Quality", selected_date)
  print(spplot(finalgrid, at=intervaly, col.regions = grid_colors, 
               sp.layout=layout, 
               main=list(nadpis, cex=2, col="black", font=2), 
               colorkey=list(at=intervaly2, labels = list( at=intervaly2, cex = 1.5, labels = intervaly, lab = intervaly2), space="bottom")))
  dev.off()
  #END OF THE PLOT!



#---OUTPUT---

[inverse distance weighted interpolation]
Error in `[[<-.data.frame`(`*tmp*`, name, value = c(8.66783923397599,  : 
  replacement has 14 rows, data has 18

所以基本上不是得到 30+ 个输出,而是得到 1 个输出(出于某种原因!?),然后我得到上面给出的错误作为输出:/。如果我没有输出,我会理解,但鉴于第一个数据文件和第二个数据文件在格式上几乎没有区别,我不应该在格式上有任何错误......

我认为可能有助于解决问题的更多信息是:

  1. 我的数据文件如下所示:

“id”“elev”“lon”“lat”“值”

阿菲永 1027 30.54277778 38.75166667 108.2903226

艾登 54 27.83666667 37.84027778 122.7096774

.

.

.

  1. 我从中复制数据的人的数据如下:

“id”“lat”“lon”“elev”“值”

2 50.69205 15.72876 816 37

3 49.735 16.0336 737 19

.

.

.

感谢您的宝贵时间。

【问题讨论】:

    标签: r for-loop plot dataframe


    【解决方案1】:

    显然这是由于我的数据中有一些“NA”条目引起的。通过给它们适当的值来修复它。虽然我仍然不知道如果我希望它与包含的那些 NA 值一起工作,代码将如何工作。

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 2015-07-01
      • 2018-04-24
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多