我有一个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
中!
答案 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)