我是R的新手,并且有一个包含~300 .csv文件的文件夹。我试图将所有数据合并到一个文件中,以便我可以对它进行一些基本的算术运算。我试过在网上搜索但是我试过的功能一直给我带来错误,例如
master <- list.files(path = "~/")
master <- do.call("rbind", lapply("001.csv" "002.csv", read.csv, header = TRUE))
返回Error: unexpected string constant in ""329.csv" "330.csv""
等等
以及
master <- do.call( rbind, lapply(`001.csv`,`002.csv` function(nam){
cbind(name=nam, read.file(paste0(nam,".csv"), header=TRUE) )
}))
给出Error: unexpected '}' in "}"
有人能帮忙吗?如果是这样,请你解释一下,如果有新手编程的人能够效仿。
谢谢
答案 0 :(得分:0)
您好我认为您的代码几乎有效,您忘了将文件名放在矢量中。您可以使用
创建一系列文件名do.call("rbind",lapply(c("001.csv", "001.csv"), read.csv, header = T))
如果文件都是“001.csv”形式,您可以使用以下函数自动化csv文件的名称,例如,如果我们有001.csv直到10.csv你可以使用:
pollutantmean <- function(idrange) {
output <- c()
for(id in idrange){
if((id>=1) && (id<10)) {
output <- c(output, paste("00",id,sep=""))
} else if((id>=10) && (id<=99)) {
output <- c(output, paste("0",id,sep=""))
} else {
output <- c(output,id)
}}
output
}
do.call("rbind",lapply(paste0(pollutantmean(1:10),".csv"), read.csv, header = T))
我用来创建污染物功能的Using colon to specify a sequence in function的信用。
答案 1 :(得分:0)
最后我使用了它,它似乎工作。
files_full <- list.files("specdata", full.names=TRUE)
dat <- data.frame()
for (i in 1:332) {
dat <- rbind(dat, read.csv(files_full[i]))
}
str(dat)
感谢您的帮助