2016-11-30 66 views
0

我有一個簡單的問題,但到現在我無法找到這一個通用的解決方案:
比方說,我有一個數據幀>df,我從.csv文件中得到了導入的數據幀可以轉換爲函數嗎?

> df <- read.csv("foo.csv")  
    > df 
     a b 
    1 1 D 
    2 2 E 
    3 3 F 

我要救這個數據幀放在.R文件中,以便稍後再次獲取它,但不讀取.csv文件。它應該在源文件中,以便文件可以與其他用戶共享。
是否有這個數據幀轉換成書面的功能,如
df<-data.frame(a=c(1,2,3),b=c("D","E","F"))

+1

可以使用'save'或'save.image'將環境中的對象保存爲.RData,然後'load' – akrun

+2

另一種方法是在df不太大的情況下將'dput(df)'的輸出複製並粘貼到源文件中。 – mt1022

+0

嘗試'dump(「mtcars」)'並檢查生成的名爲「dumpdata.R」的文件。這與'dput'相同。 –

回答

0

我們可以使用save o [R save.image在會議結束時作爲.RData

save.image("yourfile.RData") 

,然後在必要時加載它,以便早期創建的所有對象都會被加載

load("yourfile.RData") 

如果我們需要save只有單個對象,只需命名對象和文件

save(df, file = "yourfile.RData") 
load("yourfile.RData") 
0

您可以使用一個函數來做到這一點的可能性:

mydf <- function(){ 
    data.frame(a=c(1,2,3),b=c("D","E","F")) 
} 

mydf() 
> mydf() 
a b 
1 1 D 
2 2 E 
3 3 F 

的是,你在找什麼?

如在註釋中規定:

  • 具有較大data.frame秒(如果不是所有data.frame S,save + load是一個更好和更方便的替代
  • dput(read.csv(...))結果可以代替data.frame(a=c(1,2,3),b=c("D","E","F"))在上面的示例中
+0

好吧,我看到我應該提到我的情況下的數據框是一個很大的數據框。所以我看到你的觀點建立這樣一個功能。但是我正在尋找的是一個可以導致像你這樣的功能的功能。既然它很清楚數據框是怎麼樣的,那麼R應該有可能用另一種方式思考,並且構建可以產生相同輸出的功能,而不需要保存文件等。只需要一個函數, .R源文件到其他將被保存在那裏的函數。但我想我會使用.RData方法。不管怎麼說,多謝拉。在包dev中有 –

+0

有延遲加載數據集的選項;例如'iris',而不需要'數據(虹膜)'或任何其他函數調用(例如'load'或自定義函數)。也許這可能會很舒服,如果你正在外包工作,但在我的愚見認爲這不值得的努力,我也會去rdas。 –