从文件名定义对象

时间:2014-02-28 09:46:42

标签: r

R中是否有办法从文件名中定义对象?

我从许多具有相同结构的年度文件中导入数据(每月一列,每天一行)。这些文件中的每一个都按照以下方案命名:“Station_YYYY.txt”,其中YYYY是年份的编号(例如,1985年)。

我必须合并这些数据集,这样我在融合之前需要的是为“Station”添加一列,为“year”添加一列。

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题是正确的 你做了类似

的事情
a <- "Station_YYYY.txt"
dat<-read.csv(a,OTHER OPTIONS)

只需追加这样的电台和年份:

dat$station<-strsplit(a,"[._]")[[1]][1]
dat$year<-strsplit(a,"[._]")[[1]][2]

答案 1 :(得分:0)

另一种方法是做几个简单的循环...

要使以下工作正常,请确保您的本地环境为空,因为我们将搜索“_”作为文件名

setwd('') # direct R to where the files are stored
rm(list=ls())
files <- list.files()

for(file in files){
  name <- paste(file)
  name <- assign(name, read.csv(file))
}

data_sets <- grep('_', ls(), value = T)

allData <- data.frame()
for(i in data_sets){
  dat <- get(i)
  station_end <- data.frame(str_locate(i, '_'))$start - 1
  year_end <- data.frame(str_locate(i, '_'))$end + 4
  dat$station <- str_sub(i, 1, station_end)
  dat$year <- str_sub(i, station_end + 2, year_end)
  allData <- rbind(allData, dat)
}

allData