我设法创建一个循环,打开我在文件夹中的csv文件,并在第一列中添加文件名。但是,我不知道如何将所有创建的表放在一起,以便循环后的最终输出是一个data.frame与所有csv一起(文件名作为第一列)。我尝试使用cbind,但它不起作用。任何帮助都感激不尽。这是我的尝试:
<div class='fieldcontain typeCauses'>
<label for='typeCause.label'>
<g:message code='typeCause.label' />
</label>
<g:select from='${TypeCause.list()}' multiple='true' name='typeCauses' optionKey='id' value='${clientInstance?.typeCauses*.id}'></g:select>
</div>
答案 0 :(得分:18)
尝试这种方式:
1 - 在for-loop
之外定义temp
temp<-NULL
2 - 在for循环中分配temp2
,如下所示:
temp[[a]]=temp2
3 - 在for循环之后绑定所有data.frames:
library(dplyr)
output<-bind_rows(temp)
完整代码已审核:
csvfilenames <- list.files("/Users/carlos/Desktop/TestCSVFilesToMerge/",
pattern="*.csv", all.files=FALSE, full.names=FALSE) #creates a list with the file names
csvfilenames
temp<-NULL
for(i in 1:length(csvfilenames))
{
a=csvfilenames[i]
temp1<-read.csv(file=paste("/Users/carlos/Desktop/TestCSVFilesToMerge/",a,sep=""),sep=";", header=T)
temp2<-cbind("FileName"=a,temp1[,1:ncol(temp1)]) #add a column called FileName in position 1
temp[[a]]=temp2
}
library(dplyr)
output<-bind_rows(temp)