【问题标题】:R for loop write table row.names= file names?R for循环写表row.names=文件名?
【发布时间】:2015-11-13 07:23:21
【问题描述】:

当我使用write.table 函数时,似乎没有row.names=file.names[i] 选项。例如,假设文件夹中有 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”?

【问题讨论】:

  • 我刚刚想通了——使用简单的filename &lt;- append(filename,print(file.names[i])),然后将filename 包含到data.frame

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


【解决方案1】:

您在“file.names”中有文件名,因此只需将
x &lt;- data.frame(keyword,totalword) 更改为
x &lt;- data.frame(file.names[i],keyword,totalword)
您可能必须摆脱row.names = TRUE。

【讨论】:

    【解决方案2】:

    有了这些数据:

    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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-04
      • 2020-04-26
      • 1970-01-01
      • 2013-03-21
      • 2011-10-09
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      相关资源
      最近更新 更多