导入数据时避免重复语句

时间:2013-04-25 18:47:18

标签: r loops import

我编写了以下代码将数据导入R:

## specify where all the data files are stored 
DataFolder <- "DataFolder"

## obtain the name of each file in DataFolder
files <- list.files(DataFolder)

## obtain name of each file
LocNames <- unique(sub("^([^.]*).*", "\\1", files)) # this removes the extension and keeps the unique names

for (i in 1:length(LocNames)){

  #
  car <- read.table(paste(DataFolder, paste(LocNames[i], ".car", sep=""), sep="/"),
                    header = TRUE, sep = "\t", colClasses=c(dateTime="POSIXct"))  
  car <- aggregate(car[colnames(car)[2:length(colnames(car))]],list(dateTime = cut(car$dateTime,breaks = "hour")),mean, na.rm = TRUE)

  #  
  light <- read.table(paste(DataFolder, paste(LocNames[i], ".light", sep=""), sep="/"),
                    header = TRUE, sep = "\t", colClasses=c(dateTime="POSIXct"))
  light <- aggregate(light[colnames(light)[2]],list(dateTime = cut(light$dateTime, breaks = "hour")),mean, na.rm = TRUE)
}

所以,这里有一个DataFolder,我的所有文件都存储在其中。根据记录数据的位置以及给定测量变量名称的文件扩展名来命名文件。在这里,我们以汽车销售和灯具为例。

从这里我想减少循环内部参数的大小,所以不必在另一个重复相同步骤之后命名一个变量,我只想写变量名称,例如汽车,光然后显示的脚本的结果将被返回。

如果我的意图不明确,请告诉我。

1 个答案:

答案 0 :(得分:1)

只需使用一个功能。

的影响
## specify where all the data files are stored 
DataFolder <- "DataFolder"

## obtain the name of each file in DataFolder
files <- list.files(DataFolder)

readMyFiles <- function(DataFolder, LocNames, extension){
  data <- read.table(paste(DataFolder, paste(LocNames[i], ".", extension, sep=""), sep="/"),
                    header = TRUE, sep = "\t", colClasses=c(dateTime="POSIXct"))  
  data <- aggregate(data[colnames(data)[2:length(colnames(data))]],list(dateTime = cut(data$dateTime,breaks = "hour")),mean, na.rm = TRUE)
  data
}

## obtain name of each file
LocNames <- unique(sub("^([^.]*).*", "\\1", files)) # this removes the extension and keeps the unique names

for (i in 1:length(LocNames)){

  car <- readMyFiles(DataFolder, LocNames, ".car")

  light <- readMyFiles(DataFolder, LocNames, ".light")
}