rbind data.frames具有相同的列数但在for循环中的行数不同,正好是另一个(垂直)

时间:2017-10-31 17:26:26

标签: r list loops dataframe merge

我已经阅读了很多data.frame rbind相关的问题,但没有一个能帮我解决问题。我已经制作了一个脚本来递归扫描文件夹,在for循环的帮助下,基于shapefile从文件夹中的每个图像中提取像素值。在附图中,您可以看到data.frame,它是从一个文件夹中提取的结果。 pixel extraction dataframe

所有其他文件夹具有相同数量的图像,这些图像的名称非常相似,因此其他数据框中的列数将始终相同且列将匹配,但其他行的行数将不同原因。我不关心新图像中列的名称,我只想垂直粘贴每个文件夹的提取结果。 Rbind给我“名称与以前的名称不匹配”错误,rbind.fill将新列水平放置,与merge函数一样。

这是代码,它有一些必要的步骤和步骤与我的本地文件夹结构相关,这对于问题不是必要的,但是我觉得显示它并没有什么坏处。对不起导致它凌乱,我在R中不是很有经验:

dirs=list.dirs(full.names=TRUE)
dirs=dirs[grepl("R20",dirs)]
dirs=as.list(dirs)
dirs

DataToWrite=list()
for (j in 1:length(dirs)) {

   setwd(paste("E:/SUO-
PUO/Ostalo/Sentinel/Potencijalna_rjesenja/R/",as.character(dirs[j]),sep="/"))
   files=list.files(full.names=FALSE,pattern="*20m*.tif$")
   for (i in 1:length(files)) {

      curRaster=raster(paste(getwd(),files[i],sep="/"))
      rasterOut=(na.omit(extract(curRaster,azo_plohe, cellnumbers=TRUE, 
      weights=TRUE, df=TRUE)))
      DataToWrite=c(DataToWrite,rasterOut[3])
      }

   mylist=as.data.frame(DataToWrite)
   naziv_fajla=as.vector(rep((substr((names(DataToWrite)
   [1]),5,19)),nrow(mylist)))
   tablica_folder=as.data.frame(c(rasterOut[2],naziv_fajla[1],mylist))
   }

这段代码虽然肯定不是执行此类任务的最佳方式,但对于一个文件夹来说是可以的,但是当它开始循环另一个文件夹并进入需要将它们组合起来的部分时(“mylist = as.data”)。 frame(DataToWrite)“)我收到此错误:

"Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = 
TRUE, : arguments imply differing number of rows: 100, 63"

任何人都可以帮助我吗?

0 个答案:

没有答案