【问题标题】:R write to file / append at start of fileR写入文件/在文件开头追加
【发布时间】:2013-10-28 22:36:00
【问题描述】:

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

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 中。有什么建议吗?

【问题讨论】:

    标签: r append sparse-matrix


    【解决方案1】:

    通常不可能在文件的开头添加(如果有办法,它们将非常低效,因为内存中文件开头的信息通常是未知的。这适用于任何编程语言)。

    想到三个选项:

    • 读入文件,先写其他信息,再写文件其余内容(也可能效率低下)
    • 先写下您要添加的信息
    • 如果您有一个无法追加的写入器(例如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:

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

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2011-12-24
      • 2013-06-03
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      相关资源
      最近更新 更多