我正在尝试编写一个输入文件,在第一行中需要一行,告诉文件是否稀疏,如果是,那么有多少变量级别。我知道如何将一行附加到文件的末尾,但无法找到附加到文件第一行的方法。有什么建议吗?
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
。有什么建议吗?
答案 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:
相反,请考虑使用包含文件名等信息的元文件,是否稀疏以及级别数。在这里你可以追加,如果你重复这个过程,那将是更好的选择。它将避免在奇怪格式的文件中读取问题。