2010-08-05 32 views
4

比方說,我有一個像data.frame:是否可以同時使用write.table()和ddply?

a <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10) 
df <- data.frame(a,rnorm(100)) 

而且我希望能夠寫爲x的每個值CSV文件。用ddply可以做到這一點嗎?

我已經可以用for循環在幾行內做到這一點...但我很好奇,如果可以用ddply來做到這一點。

for (x in 1:nrow(unique(df["a"]))) { 
tmp <- unique(df["a"]) 
tmp2 <- paste(tmp[x,],".csv", sep="") 
write.table(subset(df, a == tmp[a,], drop=T),file=tmp2, sep=",", row.names=F) 
} 

回答

4

繼續從約書亞的回答,plyr函數使用是d_ply不希望返回任何東西。你可以做這樣的事情:

d_ply(df, .(a), 
     function(sdf) write.csv(sdf, 
           file=paste(sdf$a[[1]],".csv",sep=""))) 

file參數write.csv的結構使得每個子集得到一個不同的文件名。

1

這是可能ddply做到這一點,但是這不是什麼功能是專爲。從plyr文檔:

所有plyr功能使用相同的 分申請,結合戰略...

要分割的data.frame和應用功能,但你不知道想要返回什麼,所以ddply會拋出一個錯誤,如果你不返回可以組合成data.frame的東西。

相關問題