Экспорт столбцов в отдельные файлы CSV - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть этот data.frame в R:

df <- structure(list(AA = c(0.3, 0.1, 0.6), BB = c(0.9, 0.4, 0.2),
CC = c(1, 0.8, 0.6), DD = c(0.7, 0.5, 0.5)), .Names = c("AA", "BB", "CC", "DD"), class = "data.frame", row.names = c(NA, -3L))

Теперь мне нужны столбцы (AA, BB, CC, DD), записанные в отдельные CSV-файлы, названные в честь имен соответствующих столбцов.(AA.csv, BB.csv, CC.csv и т. Д.).

Я новичок в R и знаю, как сделать это для одного столбца, используя write.csv, но просто не понимаю, как это сделать.это для многих столбцов (цикл) ...

Ответы [ 2 ]

4 голосов
/ 05 декабря 2011

Достаточно просто использовать цикл for, создавая имя файла по мере того, как вы используете ?paste:

for (ci in 1:ncol(df)) {
    write.csv(df[,ci], paste("col", ci, ".csv", sep = ""))
}

Теперь убедитесь, что это работает должным образом:

list.files(pattern = "csv")

[1] "col1.csv" "col2.csv" "col3.csv" "col4.csv"

Используя счетчик ci для каждого столбца, мы помещаем в столбец data.frame и записываем в CSV, вам могут потребоваться дополнительные параметры для write.csv, в частностиrow.names = FALSE.Просмотрите их все с помощью

(обратите внимание, что если вы не используете имена строк, запятые вообще не нужны, вы уверены, что хотите CSV-файл с одним столбцом?).

Все это довольно простые R-операции, поэтому вам следует ознакомиться с разделом Введение в R и каждой из используемых функций и элементов управления R:

?Control 
?Extract
?seq
?ncol
?write.csv
?paste
3 голосов
/ 05 декабря 2011

Я в дополнение к циклу for @mdsummer, вы можете использовать конструкцию apply, которая очень R-ish :).Общая идея состоит в том, чтобы взять подмножества объекта, с которым вы просыпаетесь, и применить функцию к каждому из этих подмножеств.Мне очень нравится семейство apply, предоставляемое пакетом plyr .Что-то вроде этого должно работать (не забудьте загрузить пакет plyr):

l_ply(names(df), function(x) write.csv(df[[x]], paste(x, ".csv", sep = ""))

Имя функции plyr говорит, что вход является списком (l), и что выход функцииотбрасывается (_).Смотрите статью, которую я связал выше, для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...