我正在尝试将数据框从 R 转换为文本文件。
数据集约为 1500 x 700,循环遍历数据帧需要一段时间,我想知道是否有任何方法可以加快该过程。
我的数据框是这样的:
>train2
score x1 x2 x3 x4 x5 ... x700
0 0 1 1 1 0 0
1 0 1 0 0 0 0
0 1 0 1 1 1 0
3 0 1 1 1 0 0
1 0 1 0 1 0 0
2 1 1 1 1 0 1
0 0 1 1 0 0 0
... . . . . . .
在创建的文件中,我只包含非零的单元格。
所以第 1-3 行的输出将是:
0 | x2:1 x3:1 x4:1
1 | x2:1
0 | x1:1 x3:1 x4:1
我当前的代码运行如下:
pt1 <- paste(train2$score," | ",sep="")
collect1 <- c()
for(j in 1:nrow(train2)){
word1 <- pt1[j]
for(i in 10:ncol(train2)){
if(train2[j,i] !=0){
word1 <- paste(word1,colnames(train2)[i],":",train2[j,i], " ", sep="")
}
}
collect1 <- c(collect1, word1)
if(j %% 100 == 0){
print(j);flush.console()
gc()
}
}
每次运行大约需要 3-4 分钟。有什么明显的提高性能的吗?
编辑:循环完成后,生成的数据框collect1
用于创建文本文件,使用:
write(collect1, file="outPut1.txt")