如何在R中编辑数据库?
问题描述:
我想要做的就是获得一个文件,其中包含输入的邮政编码和特定位置的邮政编码之间的距离(以英里为单位)的信息。我将所有可能的输入作为列名称,以及您将作为行名称进行搜索的位置。我希望能够在应用程序中输入邮政编码时填写此数据集。如何在应用程序关闭时创建一个可以保存的文件,并且在下一次运行应用程序时能够对其进行编辑?我已经尝试了很多方法,但是我一直无法写入文件,并且每次填写更多信息时重命名该文件似乎都非常低效。如何在R中编辑数据库?
答
如果刨只为您的应用程式上的一个实例,在任何时候运行,你可以使用wrtie.csv
和read.csv
或者您可以将您的变量保存为使用load
和save
功能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
如果该应用程序应该支持多用户,也许这是最好有您存储用户在一列,并在使用序列like this其他列的数据矩阵数据库(SQL-精简版也许?)。
# 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]))
希望这有助于!
也许[闪亮的应用程序中的持久数据存储](http://deanattali.com/blog/shiny-persistent-data-storage/)将帮助 – tospig