Один из подходов заключается в использовании пакета plyr и функции d_ply()
. d_ply()
ожидает data.frame в качестве ввода. Вы также предоставляете столбец (столбцы), который хотите нарезать и нарезать кубиком на data.frame независимо друг от друга. В этом случае у вас есть идентификатор столбца. Эта конкретная функция не возвращает объект, и, таким образом, она полезна для построения графика или итеративного создания чартера и т. Д. Вот небольшой рабочий пример:
library(plyr)
dat <- data.frame(ID = rep(letters[1:3],2) , x = rnorm(6), y = rnorm(6))
d_ply(dat, "ID", function(x)
write.table(x, file = paste(x$ID[1], "txt", sep = "."), sep = "\t", row.names = FALSE))
Сгенерирует три вкладки, разделяющие файлы со столбцом ID в качестве имени файлов (a.txt, b.txt, c.txt).
РЕДАКТИРОВАТЬ - для ответа на следующий вопрос
Вы всегда можете выбрать нужные столбцы, прежде чем передать их в d_ply()
. Кроме того, вы можете использовать / злоупотреблять оператором [
и выбирать нужные столбцы в самом вызове:
dat <- data.frame(ID = rep(letters[1:3],2) , x = rnorm(6), y = rnorm(6)
, foo = rnorm(6))
d_ply(dat, "ID", function(x)
write.table(x[, c("x", "foo")], file = paste(x$ID[1], "txt", sep = ".")
, sep = "\t", row.names = FALSE))