每次更改r中的参数时,在函数中输出不同的csv

  • 本文关键字:函数 输出 csv 参数 r function csv
  • 更新时间 :
  • 英文 :


我有一个玩具函数(用于说明使用),在函数中,我必须生成一个csv文件,结果如下:

# data #
df <- data.frame(ID = c(1, 2), Obs = c(1.0, 2.0), var=c(2.0,5.0))
df
ID Obs var
1  1   1   2
2  2   2   5
# version 1 function
disp <- function(df, c=NULL) {
if(!is.null(c)){
tab_res=data.frame(v1=df$ID*2,v2=df$Obs*3,v3=df$var*c)
}else{
tab_res=data.frame(v1=df$ID*2,v2=df$Obs*3,v3=df$var)
}

result=write.csv(tab_res,"test1.csv")
return(tab_res)
return(result)
}
# current output 
disp(df,c=NULL)
v1 v2 v3
1  2  3  2
2  4  6  5
disp(df,c=1)
v1 v2 v3
1  2  3  2
2  4  6  5
disp(df,c=2)
v1 v2 v3
1  2  3  4
2  4  6 10
# it produced also a csv file with exacte tables

我需要的是每当我改变函数中的参数时,它将生成具有适当名称(由用户选择)的不同csv文件。这就是我所做的,它正在工作,但我想知道是否有任何其他有效的方法,此外,我没有看到csv文件中的列名(当我尝试将col.names设置为TRUE时,它给了我一个错误)。

# modified function version 2
disp <- function(df, c=NULL, output_name) {
if(!is.null(c)){
tab_res=data.frame(v1=df$ID*2,v2=df$Obs*3,v3=df$var*c)
}else{
tab_res=data.frame(v1=df$ID*2,v2=df$Obs*3,v3=df$var)
}

result=write.csv(tab_res,"test1.csv")
csv_name <- paste0("test1_", output_name, ".csv") 
result=write.table( tab_res,  
file=csv_name, 
append = T, 
sep=',', 
row.names=F, 
col.names=F,
quote=T)
return(tab_res)
return(result)

}
disp(df,c=NULL,"no_c")
v1 v2 v3
1  2  3  2
2  4  6  5
# it produces a csv file test1_no_c

提前感谢您的帮助!

这里有一个解决方案,无论文件是否已经存在。使用file.exists的返回值设置appendcol.names的值

disp <- function(df, output_name, c = NULL) {
df$ID <- df$ID*2
df$Obs <- df$Obs*3
if(!is.null(c)){
df$var <- df$var*c
}
names(df) <- paste0("v", 1:3)

csv_name <- paste0("test1_", output_name, ".csv")
fexists <- file.exists(csv_name)
write.table(df, file = csv_name, 
sep = ",",
append = fexists,
row.names = FALSE, 
col.names = !fexists,
quote = TRUE)
df
}
disp(df, "no_c")
disp(df, "no_c", c = 1)
disp(df, "no_c", c = 2)

相关内容

  • 没有找到相关文章

最新更新