在R语言中怎么在工作目录下同时对多个文件进行处理?

理由
举报 取消

首先,我有一个文件夹,叫specdata,specdata里面有许多文件,如图,现在我想对这些文件里的一些数据进行同时处理,于是我编了这样一个程序:pollutantmean <- function(directory,pollutant,id=1:332){ x <- dir(directory) z <- c(NA) for(i in id){ y <- read.csv(x[i]) z <- y$”pollutant”+z } mean(z,na.rm=TRUE)} pollutantmean(“specdata”,”solfate”,1:10)但是进入循环体y那步就出现了问题,无法读取x[i],我很迷惑,所以来求教下各位大神

2017年9月13日 4 条回复 969 次浏览

发起人:程伟 初入职场

设计师

回复 ( 4 )

  1. 段子望
    理由
    举报 取消

    x <- list.files(directory) 才对吧,列出该目录下的所有文件,得到所有文件名的向量。

    # 手机上写的,改天再验证。

    这似乎是coursera上R语言课的作业。

    我记得是需要读取所有文件,并将其合并为一个数据框。

    改天找出来再贴我之前写的代码。

    注:for 循环比较慢,好像用plyr包函数出来会方便得多。

    待更新……

  2. 一天只读半页书
    理由
    举报 取消
    load_data <- function(path) { 
      files <- dir(path, pattern = '\\.csv', full.names = TRUE)
      tables <- lapply(files, read.csv)
      do.call(rbind, tables)
    }
    
    pollutantmean <- load_data("目录")
    
  3. Gakki
    理由
    举报 取消

    是x <- list.files(directory)

    另外附read.table(file, header = FALSE, sep = ”, quote = ‘\”’,

    dec = ‘.’, row.names, col.names,

    as.is = !stringsAsFactors,

    na.strings = ‘NA’, colClasses = NA, nrows = -1,

    skip = 0, check.names = TRUE, fill = !blank.lines.skip,

    strip.white = FALSE, blank.lines.skip = TRUE,

    comment.char = ‘#’,

    allowEscapes = FALSE, flush = FALSE,

    stringsAsFactors = default.stringsAsFactors(),

    fileEncoding = ”, encoding = ‘unknown’, text)

    参数很多,最常用的也就几个,重写如下:

    read.table(file, header = FALSE, sep = ”, quote = ‘\”’,

    dec = ‘.’, skip = 0,

    strip.white =FALSE, blank.lines.skip = TRUE,

    comment.char = ‘#’)

    file可以是①绝对路径或者相对路径,但是一定要注意,因为在R语言中\是转义符,所以路径分隔符必须写成\\,比如“C:\\myfile\\myfile.txt”。②可以使剪切板的内容。③使用file.choose(),弹出对话框,让你选择文件位置。

    强烈推荐使用第三种方法,免去了记忆和书写文件路径的麻烦,特别是能够避免因数据文件位置移动带来的错误

  4. 喜旺酱
    理由
    举报 取消

    x<-dir(“数据存储路径“)是可以读取某个目录下的全部文件的,这点应该没错,因为我自己就写过

    但是我不确定题主你在函数中传递的参数是否有误

    比如说directory是否正确设置了,有没有漏掉引号吧

    还有你的id参数,我总觉得不太合适,如果没必要的话在循环中最好使用for(i in 1:length(x)),当然这个的前提是这个目录下的文件没有其它乱入的文件

    ———————————————————————————

    题主可以在Rstudio的右边查看下变量的值来找真正的bug出现在哪里

    如果i的值不是1的话,应该就是id的问题了

    如果x没有出现在变量列表中,那就是读取数据那里有问题

    嗯,大概就是这样

我来回答

Captcha 点击图片更换验证码