太耗时的过程

时间:2013-04-16 16:43:24

标签: r

我是R的新手,我需要你的帮助来解决与非常耗时的过程相关的问题。

我有一个非常大的数据集,我试图通过子集来创建文件数据。我写的代码是有效的,但它需要很长时间,我不知道如何使它更快。

以下是我对数据集

进行子集化的代码
df<-data.frame(a,b,c,d,e,f,g,h)

mylist <- list()

for(i in 1:(length(df$a))) {
  mylist[[i]] <- subset(df, a==df$a[i])   
  dep <- as.data.frame(mylist[i])
  SHYRMODY <- split(dep, data.frame(dep$a,dep$b, dep$c, dep$d), drop=TRUE)
  lapply(names(SHYRMODY),function(x, SHYRMODY)
    write.table(SHYRMODY[[x]],
                paste(x, ".dat", sep = ""),
                col.names=FALSE, 
                row.names=FALSE, 
                sep="\t",
                quote=FALSE),SHYRMODY)
}

1 个答案:

答案 0 :(得分:3)

像这样:

mylist    <- split(df, list(df$a, df$b, df$c, df$d), drop = TRUE)
filenames <- paste0(names(mylist), ".dat")

mapply(write.table, mylist, file = filenames,
      col.names = FALSE, row.names = FALSE, sep = "\t", quote = FALSE)

drop = TRUE选项是这样的,它不会为没有数据的(a,b,c,d)组合创建空文件。