2015-10-14 86 views
0

我想要做的就是獲得一個文件,其中包含輸入的郵政編碼和特定位置的郵政編碼之間的距離(以英里爲單位)的信息。我將所有可能的輸入作爲列名稱,以及您將作爲行名稱進行搜索的位置。我希望能夠在應用程序中輸入郵政編碼時填寫此數據集。如何在應用程序關閉時創建一個可以保存的文件,並且在下一次運行應用程序時能夠對其進行編輯?我已經嘗試了很多方法,但是我一直無法寫入文件,並且每次填寫更多信息時重命名該文件似乎都非常低效。如何在R中編輯數據庫?

+0

也許[閃亮的應用程序中的持久數據存儲](http://deanattali.com/blog/shiny-persistent-data-storage/)將幫助 – tospig

回答

0

如果刨只爲您的應用程式上的一個實例,在任何時候運行,你可以使用wrtie.csvread.csv或者您可以將您的變量保存爲使用loadsave功能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])) 

希望這有助於!