R for循环写表row.names =文件名?

时间:2015-11-13 07:23:21

标签: r csv for-loop output write.table

当我使用row.names=file.names[i]函数时,看起来没有write.table选项。例如,假设在文件夹中我有3个名为“file_1”,“file_2”和“file_3”的文件,那么在输出csv文件中,我希望看到以下结果:

"","keyword","totalword"  
"file_1",10,4348  
"file_2",1,1635  
"file_3",1,3237 

    for(i in 1:length(file.names)){
      ## calculate number of keywords and total words for each file within a folder
      x <- data.frame(keyword,totalword) 
      write.csv(x, file="results.csv",row.names = TRUE) 
    }

使用上面的代码,我所能获得的是以下内容:

"","keyword","totalword"  
"1",10,4348  
"2",1,1635  
"3",1,3237  

任何人都知道如何使用每个原始文件的名称指定行名称(即将“1”“2”“3”更改为“file_1”,“file_2”,“file_3”?

2 个答案:

答案 0 :(得分:1)

你有'file.names'文件的名称,所以只需更改
x <- data.frame(keyword,totalword)
x <- data.frame(file.names[i],keyword,totalword)
你可能不得不摆脱row.names = TRUE

答案 1 :(得分:0)

使用这些数据:

keyword<-c(10,1,1)
totalword<-c(4348,1635,3237)

以下是一些选项:

x<-data.frame(keyword,totalword,row.names=paste0('file_',1:3))
write.csv(x, file="results.csv",row.names = TRUE) 

x<-data.frame(keyword,totalword)
rownames(x)<-paste0('file_',1:3)
write.csv(x, file="results.csv",row.names = TRUE) 

write.csv(x,file="results.csv",row.names=paste0('file_',1:3))

所有这些都会在CSV文件中返回:

"","keyword","totalword"
"file_1",10,4348
"file_2",1,1635
"file_3",1,3237

我假设你有3行,然后你写了一个csv。如果你想在csv中写一行然后是下一行,依此类推(每次迭代一行),你可以这样做:

write.csv(x,file="results.csv",append=TRUE,row.names=paste0('file_',i))