对于这里真正的裂缝,这可能是相当明显的。但是!我敢问这个问题。我正在寻找一种基于第二个参数定义参数的方法。我还没有找到R的答案,但这个问题对我有帮助(我不是python用户,顺便说一句): python question
csv <- function(x, name = NULL) { #defines name as NULL
if (is.null(name)) { #tests if name is NULL and when yes,
#uses x for naming of the file
file <- deparse(substitute(x))
name <- paste0(file,'.csv')
write.csv(x, name, row.names = F)
} else { #if name argument is defined ,
#then this will happen
name1 <- paste0(name,'.csv')
write.csv(x, name1, row.names = F)
}
}
这很有效。我的csv-function默认使用第一个参数的名称作为文件名。
我现在可以用
调用csv()csv(my_df)
或
csv(my_df, 'creative_name')
但是,我想知道,如果有一个更优雅的方式比这个条件语句做这种东西。干杯。
答案 0 :(得分:1)
我认为您可以执行以下操作。请注意,我已将write_csv(x)
语句替换为return(list(x))
以用于说明目的。
csv <- function(x, name = deparse(substitute(x))) {
name1 <- paste0(name,'.csv')
return(list(x, name1, row.names = F))
}
y = head(mtcars,5)
csv(y)
输出:
[[1]]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
[[2]]
[1] "y.csv"
$row.names
[1] FALSE
希望这有帮助!