【发布时间】:2015-10-14 04:00:43
【问题描述】:
我要做的只是拥有一个文件,其中包含输入的邮政编码与某些位置的邮政编码之间的距离(以英里为单位)信息。我将所有可能的输入作为列名,将您要去的地方作为行名。我希望能够在应用程序中输入邮政编码时填写此数据集。如何制作一个可以在应用程序关闭时保存并在下次运行应用程序时能够编辑的文件?尝试了很多方法,但一直无法覆盖文件,而且每次填写更多信息时重命名文件似乎效率很低。
【问题讨论】:
我要做的只是拥有一个文件,其中包含输入的邮政编码与某些位置的邮政编码之间的距离(以英里为单位)信息。我将所有可能的输入作为列名,将您要去的地方作为行名。我希望能够在应用程序中输入邮政编码时填写此数据集。如何制作一个可以在应用程序关闭时保存并在下次运行应用程序时能够编辑的文件?尝试了很多方法,但一直无法覆盖文件,而且每次填写更多信息时重命名文件似乎效率很低。
【问题讨论】:
如果您计划在任何时候只启动并运行一个应用程序实例,您可以使用 wrtie.csv 和 read.csv 保存文件,或者您可以使用 load 和 @987654325 将变量保存为 R 数据@函数。
data <- matrix(runif(5*5),nrow=5)
# Save as .Rdata
save(file="mydata.Rdata",data)
# Load data into variable
n.env <- new.env()
load(file="mydata.Rdata",envir=n.env)
my.dat <- n.env$data
如果这个应用程序应该支持多个用户,最好有一个数据库(可能是 SQL-lite?),您可以将用户存储在一个列中,并将数据矩阵存储在另一列中,使用序列化 like this。
# The database method
library(RSQLite)
db <- dbConnect(SQLite(), dbname="mydb.sqlite")
# Create table
dbSendQuery(conn = db,
"CREATE TABLE Data (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
User INTEGER NOT NULL,
Stored BLOB,
dim INTEGER
);")
# Basically how this works, serialize and then unserialize
# unserialize( charToRaw(rawToChar(serialize(data, NULL, ascii=T))) )
in.data <- list("dat1"=rawToChar(serialize(data, NULL, ascii=T)), "user"="user1")
# Insert values it
dbGetPreparedQuery(db, 'INSERT INTO Data (Stored, User) VALUES (:dat1, :user)',
bind.data = as.data.frame(in.data) )
# Now retrive the data again
df2 <- dbGetPreparedQuery(db, "SELECT * FROM Data WHERE User = :user", bind.data = data.frame("user"="user1") )
my.dat2 <- unserialize( charToRaw(df2$Stored[1]))
希望这会有所帮助!
【讨论】: