分享
在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],我很迷惑,所以来求教下各位大神
回复 ( 4 )
x <- list.files(directory) 才对吧,列出该目录下的所有文件,得到所有文件名的向量。
# 手机上写的,改天再验证。
这似乎是coursera上R语言课的作业。
我记得是需要读取所有文件,并将其合并为一个数据框。
改天找出来再贴我之前写的代码。
注:for 循环比较慢,好像用plyr包函数出来会方便得多。
待更新……
是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(),弹出对话框,让你选择文件位置。
强烈推荐使用第三种方法,免去了记忆和书写文件路径的麻烦,特别是能够避免因数据文件位置移动带来的错误
x<-dir(“数据存储路径“)是可以读取某个目录下的全部文件的,这点应该没错,因为我自己就写过
但是我不确定题主你在函数中传递的参数是否有误
比如说directory是否正确设置了,有没有漏掉引号吧
还有你的id参数,我总觉得不太合适,如果没必要的话在循环中最好使用for(i in 1:length(x)),当然这个的前提是这个目录下的文件没有其它乱入的文件
———————————————————————————
题主可以在Rstudio的右边查看下变量的值来找真正的bug出现在哪里
如果i的值不是1的话,应该就是id的问题了
如果x没有出现在变量列表中,那就是读取数据那里有问题
嗯,大概就是这样