我正在尝试将csv文件读入R中的数据帧中。我已经设法遍历定义的文件夹,读取csv文件并分配它们,以便创建具有名称的数据帧。但是,如果一个数据框已经存在,我似乎无法追加数据。如果数据框已经存在,我想在底部添加新数据,而不仅仅是替换整个内容。
这是我到目前为止的工作:
fileName <- list.files("\\path\\subfolder", "*csv", full.names = FALSE)
fileName <- gsub(".csv", "", fileName)
for (i in 1:length(testPath)) {
tempVar <- read.csv(testPath[i])
assign(fileName[i], tempVar)
}
这只会在一个文件夹中循环,我知道如何使其在多个文件夹中循环。但是,当我两次运行此代码时,它不会将数据追加到数据帧中,而是仅通过csv重新创建它们
感谢您的帮助!
更新:我发现下面有问题
答案 0 :(得分:0)
我只是想通了。我对R很陌生,所以我做了一个变通办法,如果存在一个临时数据框,则将其创建,然后将其与旧的合并。如果将来有人在寻找代码,这就是我所做的。
它不漂亮,但是可以工作:
mainFilesOutputFolder <- paste("\\\\network\\folder\\", sep="")
scanSubFolders <- c("subfolder1", "subfolder2", "subfolder3")
for (k in 1:length(scanSubFolders)) {
csvOutputs <- list.files(paste(mainFilesOutputFolder, scanSubFolders[k], "\\", sep=""), "*csv", full.names = TRUE)
fileName <- list.files(paste(mainFilesOutputFolder, scanSubFolders[k], "\\", sep=""), "*csv", full.names = FALSE)
fileName <- gsub(".csv", "", fileName)
for (i in 1:length(csvOutputs)) {
df_name <- fileName[i]
if (exists(df_name)) {
mergedDF <- rbind(get(fileName[i]),read.csv(csvOutputs[i]))
assign(fileName[i], mergedDF)
}else{
#false
assign(fileName[i], read.csv(csvOutputs[i]))
}
}
}
希望这对某人有帮助!