使用 write.table 或 write.csv 时,有没有办法让对象名称成为文件名字符串?
在下文中,a 和 b 是向量。我将对许多其他向量对进行类似的比较,并且不想像我一直在做的那样多次写出对象名称。
unique_downa<-a[!(a%in%b)]
write.csv(unique_downa,file="unique_downa.csv")
或者,如果有人对完成整个过程的更好方法提出建议,我很乐意听到。
惯用的方法是使用deparse(substitute(blah))
例如
write.csv.named <- function(x, ...){
fname <- sprintf('%s.csv',deparse(substitute(x)))
write.csv(x=x, file = fname, ...)
}
使用列表元素的名称而不是尝试使用对象名称可能是最简单的:
mycomparisons <-list (unique_downa = a[!(a%in%b)], unique_downb = b[!(b%in%a)])
mapply (write.csv, mycomparisons, paste (names (mycomparisons), ".csv", sep =""))
最好的办法可能是将你的向量放在一个列表中,然后在同一个循环中进行比较、命名和写出,但这取决于这些相似比较的相似程度......