用于处理文件夹中所有数据文件的R脚本不起作用

时间:2016-03-05 12:26:03

标签: r

我写了一个R代码来处理文件夹中的文件,我需要一些帮助才能使用文件名作为数据框的名称。

运行以下R代码时没有错误消息。我希望每个循环都能创建它的数据框;其数据框的名称由其文件名命名。

请帮助我让它发挥作用。

这是我的R代码:

    files <- list.files(path="/Users/me/Desktop/mydatefolder20151217", pattern=".TXT")

for (fname in files) {
    fname <- read.table(fname)
    if (ncol(fname) == 11) {  
       fname<-subset(fname, select=-c(V7))
    }
    colnames(fname) <- c("ID","yy","mm","dd","HH","MM","Temp","Rh","Vs","Vf")       
    fname$Temp[fname$Temp < -50 | fname$Temp > 50] <- NA
    fname$DateTime <- as.POSIXct(paste(fname$yy, fname$mm, fname$dd, fname$HH, fname$MM), format = "%y %m %d %H %M")   
}

2 个答案:

答案 0 :(得分:2)

您可以通过将数据框转换保存到之后可以访问的列表来清理代码。我无法测试这是否有效;您没有在示例中提供任何实际数据。 :

files <- list.files(path="/Users/me/Desktop/mydatefolder20151217", pattern=".TXT")

all_dfs <- vector("list", length(files))

for (i in 1:length(files)) {
  df <- read.table(files[i])
  if (ncol(df) == 11) {  
    df <- subset(df, select=-c(V7))
  }
  colnames(df) <- c("ID","yy","mm","dd","HH","MM","Temp","Rh","Vs","Vf")       
  df$Temp[df$Temp < -50 | df$Temp > 50] <- NA
  df$DateTime <- with(df, as.POSIXct(paste(yy, mm, dd, HH, MM), format = "%y %m %d %H %M"))

  all_dfs[[i]] <- df

  names(all_dfs)[i] <- paste0("df", i)                    
}

答案 1 :(得分:0)

full.names=TRUE添加到list.files来电。

另请注意,pattern应该是正则表达式,而不是shell通配符表达式。如果您想要所有扩展名为.txt的文件,请使用pattern="\\.TXT$"。由于您看起来像是在Windows上,因此请添加ignore.case=TRUE作为衡量标准。