循环"功能"和" for循环"通过数据帧列表

时间:2014-12-03 15:42:31

标签: r

HY。 我正在使用R.中的shapefile。我写了一个脚本来处理我的一个shapefile。因此我写了多个函数和for循环。处理完shapefile后,它将被写入另一个文件夹。现在我需要将它应用于我的所有shapefile。是否有捷径可寻?我是R的新手。

我得到了什么? 一个shapefile的脚本,如下所示: 上传文件并设置时间格式:

setwd("")
shape=ReadOGR(dsn=", layer= "Trip_2")
shape$Zeit= as.POSIXct(strptime(shape$Zeit_txt, format= "%d.%m.%Y%H:%M:%S", tz="GMT"), tz="GMT")

首次提取:如果Count不是1,则使Wegtyp NA

shape$wegtyp[shape$Count != 1] = NA
shape$name_wegty[shape$Count != 1] = NA
shape$OBJECTVAL[shape$Count != 1] = NA
shape$name_weg_1[shape$Count != 1] = NA

第一个功能:

calculateDistancesWGS = function(long, lat){
  distWGS = long
  distWGS = NA
  for (i in 1:(length(lat)-1)){
    distWGS[i+1] = distCosine( c(long[i+1], lat[i+1]), c(long[i], lat[i]))
  }
  return(distWGS)
}

shape$distanceWGS = calculateDistancesWGS(shape$longitude, shape$latitude)

更多功能跟随

将文件解压缩为shapefile:

 writeOGR(shape, dsn= "", layer= "Trip_03", driver= "ESRI Shapefile" )

现在我需要使用我的所有shapefile执行此操作并使用不同的名称保存它们。 我能够将几个shapefile导入到R中,创建一个像这样的数据帧列表:

 setwd("")
list_shp <-        list.files(path="", pattern="*.shp", full.names = TRUE,
                       recursive = TRUE, include.dirs = FALSE)
shapes <- lapply(list_shp, function(x) {readOGR(dsn=x,     layer=ogrListLayers(x))})

但是当它应用时间格式和功能时我无法弄清楚要做什么。

以下是我的数据的简短示例:

d1= data.frame(longitude=(10.42206), latitude= (46.60109), Wegtyp= (1),     Zeit_txt= 14.50)
d2= data.frame (longitude= (10.42207), latitude= (46.60108), Wegtyp= 2, Zeit_txt= (14.55))

任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:1)

您只需lapply执行所需命令的功能,如下所示:

addTime <- function(shape) { 
  shape$Zeit= as.POSIXct(strptime(shape$Zeit_txt, format= "%d.%m.%Y%H:%M:%S", tz="GMT"), tz="GMT")
  return(shape)
}
shapes <- lapply(shapes, addTime)