如何在使用Map()时指定.csv分隔符

时间:2018-12-14 14:43:19

标签: r

我有一个list,其中包含2个或更多dataframes

d <- data.frame(x=1:3, y=letters[1:3])
f <- data.frame(x=11:13, y=letters[11:13])
df <- list(d, f)

要将它们另存为.csv,我使用以下语法:

filenames = paste0('C:/Output_', names(df), '.csv')
Map(write.csv, df, filenames)

但是我想添加一些字符串以获得特定格式,例如:

quote = FALSE, row.names = FALSE, sep = "\t", na = "", col.names = FALSE

问题是我不确定在哪里添加该语法。无论我在哪里尝试,我都会收到warning说我的语法已被忽略。

> Warning messages:
1: In (function (...)  : attempt to set 'col.names' ignored
2: In (function (...)  : attempt to set 'sep' ignored
3: In (function (...)  : attempt to set 'col.names' ignored
4: In (function (...)  : attempt to set 'sep' ignored

有什么建议吗?最好在BaseR中!

2 个答案:

答案 0 :(得分:5)

为什么仍然收到col.names警告:您会在文档(?write.csv)的更下方看到

  

这些包装器[write.csv和write.csv2]故意不灵活:它们旨在        确保使用正确的约定写出有效的        文件。尝试更改“ append”,“ col.names”,“ sep”,“ dec”或“        忽略“ qmethod”,并显示警告。

如果改用write.table(),应该消失。

答案 1 :(得分:3)

您需要使用匿名函数才能传递进一步的参数,即

Map(function(...) write.csv(..., quote = FALSE, row.names = FALSE, sep = "\t", na = ""), df, filenames)