使用write.table或write.csv自动将对象名称用作文件名

时间:2013-06-04 04:25:55

标签: r csv filenames

使用write.table或write.csv时,有没有办法让对象名成为文件名字符串?

在下文中,a和b是向量。我将对许多其他矢量对进行类似的比较,并且不想像我一直多次写出对象名称。

  

unique_downa的百分比抑制率!(以%B A%)] -a

     

write.csv(unique_downa,文件= “unique_downa.csv”)

或者,如果有人建议更好地完成整个过程,我会很高兴听到它。

2 个答案:

答案 0 :(得分:5)

惯用法是使用deparse(substitute(blah))

例如

 write.csv.named <- function(x, ...){
      fname <- sprintf('%s.csv',deparse(substitute(x)))
      write.csv(x=x, file =  fname, ...)
 }

答案 1 :(得分:1)

最简单的方法是使用列表元素的名称而不是尝试使用对象名称:

mycomparisons <-list (unique_downa = a[!(a%in%b)], unique_downb = b[!(b%in%a)])
mapply (write.csv, mycomparisons, paste (names (mycomparisons), ".csv", sep =""))

最好的办法是将你的矢量放在一个列表中,然后在同一个循环中进行比较,命名和写出,但这取决于这些相似比较的相似程度...... < / p>