2013-10-20 75 views
1

我想寫一個輸入文件,需要在第一行中的一行,告訴如果該文件是稀疏的,如果有的話,有多少變量水平。我知道如何將單行追加到文件的末尾,但無法找到追加到文件第一行的方式。有什麼建議麼?R寫入文件/追加在文件開始

library(e1071) 
library(caret) 
library(Matrix) 
library(SparseM) 

iris2 <- iris 
iris2$sepalOver5 <- ifelse(iris2$Sepal.Length >= 5, 1, -1) 
head(iris2) 
summary(iris2) 

trainRows <- sample(1:nrow(iris2), nrow(iris2) * .66, replace = F) 
testRows <- which(!(1:nrow(iris2) %in% trainRows)) 
sum(testRows %in% trainRows) 
sum(trainRows %in% testRows) 

vtu1 <- c('Sepal.Width','Petal.Length','Petal.Width','Species') 
dv1 <- dummyVars(~., data = iris2[,vtu1], sparse = T) 

train <- iris2[trainRows,] 
test <- iris2[testRows,] 

trainX <- as.matrix.csr(predict(dv1, train)) 
testX <- as.matrix.csr(predict(dv1, test)) 
trainY <- train[,'sepalOver5'] 
testY <- test[,'sepalOver5'] 

write.matrix.csr(as(trainX , "matrix.csr"), file= "amz.train" , fac = TRUE) 
headString <- paste('sparse ',max([email protected]),sep = '') 

我基本上要插入/追加headStringamz.train第一排。有什麼建議麼?

回答

0

這通常是不可能的前面加上一個文件的開始(如果有辦法,他們將是非常低效的,因爲在內存中的文件的啓動信息通常是未知的。這一點適用於任何編程語言)。

三個選項浮現在腦海中:

  • 閱讀文件,寫等信息第一,其次是該文件的內容的其餘部分(也可能是低效)
  • 寫你的信息要在前面加上第一
  • 在這種情況下,你有一個作家不能追加(write.matrix例如沒有附加選項),你可以嘗試合併,數據幀這些元信息,然後寫它作爲一個整體。

由於您使用的是專門的格式,因此我不建議以這種方式存儲此元信息。

你的文件看起來像:

sparse 6 
1:3 2:5.2 3:2 6:1 
1:3.7 2:1.5 3:0.2 4:1 
1:3.2 2:6 3:1.8 6:1 

再有就是選擇4:

相反,考慮具有包含的信息,如文件名,元文件,無論是稀疏或不和級別的數量。在這裏你可以追加,如果你想重複這個過程,那就更好了。這將避免在古怪的格式文件閱讀問題。