R在文件开头写入文件/追加

时间:2013-10-20 12:50:42

标签: r append sparse-matrix

我正在尝试编写一个输入文件,在第一行中需要一行,告诉文件是否稀疏,如果是,那么有多少变量级别。我知道如何将一行附加到文件的末尾,但无法找到附加到文件第一行的方法。有什么建议吗?

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(trainX@ja),sep = '')

我基本上想在第一行中将headString插入/追加到amz.train。有什么建议吗?

1 个答案:

答案 0 :(得分: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:

相反,请考虑使用包含文件名等信息的元文件,是否稀疏以及级别数。在这里你可以追加,如果你重复这个过程,那将是更好的选择。它将避免在奇怪格式的文件中读取问题。