0

我有一个包含 lat、long 和数百个索引值的文件(I):

head(df2)
       lat      lon I Wp.ID      Date       
1 23.71413 90.67866 3 2867G 14-Jan-13      
2 23.71690 90.66534 3 2374J 12-Dec-12      
3 23.71701 90.66492 3 2377J 12-Dec-12      
4 23.71701 90.66565 4 2373J 12-Dec-12      
5 23.71712 90.66569 4 2372J 12-Dec-12
6 23.71712 90.66462 4 2378J 12-Dec-12 
... ...
... ...  

如果我想根据索引(I)选择数据;例如, I = 4 ,我将其写为:

Idx <- df2[df2$I == 4,]

然后我可以将其导出为:

write.table(Idx, file = "/Users/Idx4.txt",
          eol = "\n", na = "NA", row.names = FALSE)

由于有超过 100 个索引值,我想创建一个循环来一次写入所有文件,但我不知道如何使用 R 来完成它。有什么想法可以继续吗?

4

2 回答 2

0

你可以用它lapply来实现,但我更喜欢plyr::l_ply

require(plyr)
save_df <- function(index) {
    write.table(subset(df2, I == index),
                file = file.path("Users", paste0("Idx", index, ".txt")), 
                row.names = FALSE)
}

l_ply(df2$I, save_df)
于 2013-07-16T21:42:26.217 回答
0

如果你有大约 100 个索引值并且你的数据不是太大,你可以很简单地做到这一点:

fnames <- sort(unique(df2$I))
dfs <- split(df2, df2$I)
lapply(1:length(fnames), function (k) {
         write.table(dfs[[k]],
                     file=paste0("Users/", fnames[[k]], ".txt"),
                     row.names=FALSE)
         })
于 2013-07-16T21:44:26.480 回答