一种方法是使用 plyr 包和d_ply()
功能。d_ply()
需要一个 data.frame 作为输入。您还提供一列,您希望通过该列对 data.frame 进行切片和切块,以便彼此独立地进行操作。在本例中,您拥有列 ID。这个特定的函数不返回对象,因此对于绘图或迭代制定章程等很有用。这是一个小工作示例:
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))