将data.frame写入CSV文件,并使用变量名称作为文件名

sub*_*bro 4 csv r dataframe

我有3个数据帧,df1,df2,df3。我需要将这些df转换为csv文件。因此,在功能的帮助下,我正在如下使用write.csv。

    hiveq <- function(f_name){
        f_name
        write.csv(f_name,file=paste(f_name,".csv",sep=""),row.names = FALSE, col.names = FALSE)}
hiveq("df1")
hiveq("df2")
hiveq("df3")
Run Code Online (Sandbox Code Playgroud)

当我打开csv工作表时,它仅显示df1,而不显示df1的内容。我如何对R说,它应该看成Df而不是字符串。我尝试使用as.name,gsub,as.formula删除f_name变量周围的引号,但不起作用。有人可以帮我吗?

zak*_*vic 5

一种方便的方法是“非标准评估”。这是在您的情况下如何工作的方法:

hiveq <- function(df) {
  write.csv(df, file = paste(deparse(substitute(df)),".csv",sep=""), row.names = FALSE, col.names = FALSE)
}
hiveq(df1)
hiveq(df2)
hiveq(df3)
Run Code Online (Sandbox Code Playgroud)

这里发生的是表达式deparse(substitute(df))返回一个字符串,其中包含传递给的R对象的名称df。因此,当您致电:

hiveq(df1)
Run Code Online (Sandbox Code Playgroud)

计算结果为“ df1”,该函数将数据帧写入名为“ df1.csv”的文件。