Как указать разделитель .csv при использовании Map () - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть 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 голосов
/ 14 декабря 2018

Почему вы по-прежнему получаете col.names предупреждений: дальше в документации (?write.csv) вы увидите

Эти оболочки [write.csv и write.csv2] намереннонегибкие: они предназначены для того, чтобы гарантировать, что правильные соглашения используются для записи правильного файла.Попытки изменить 'append', 'col.names', 'sep', 'dec' или 'qmethod' игнорируются, с предупреждением.

Должно уйти, если вы вместо этого используете write.table().

0 голосов
/ 14 декабря 2018

Вам нужно использовать анонимную функцию, чтобы иметь возможность передавать дополнительные аргументы, например

Map(function(...) write.csv(..., quote = FALSE, row.names = FALSE, sep = "\t", na = ""), df, filenames)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...