我根据以下形式的一组twitters制作了一个数据框:
rdmTweets <- userTimeline("rdatamining", n=200)
df <- do.call("rbind", lapply(rdmTweets, as.data.frame))
现在我以这种方式保存数据框:
save(df, file="data")
如何加载保存的数据框以供将来使用?当我使用时:
df2 <- load("data")
我申请dim(df2)
它应该返回数据框有的推文数量,但它只显示1。
答案 0 :(得分:37)
正如@mrdwab所指出的,save
保存了名称以及数据/结构(实际上可以在一个文件中保存许多不同的R对象)。还有另一对存储功能可以按预期运行。试试这个:
saveRDS(df, file="mytweets.rds")
df2 <- readRDS("mytweets.rds")
这些函数一次只能处理一个对象。
答案 1 :(得分:13)
另一种选择是将数据框保存为csv文件。此选项的好处是它提供长期存储,即您(可能)可以在十年内在任何平台上打开您的csv文件。使用RData
文件,您只能使用R打开它,我不想在版本之间打开它而打赌。
要将文件另存为csv,只需使用:read.csv
和write.csv
,所以:
write.csv(df, file="out.csv", row.name=FALSE)
df = read.csv("out.csv", header=TRUE)
Gavin在下面的评论中提出了几点意见:
CSV路线仅适用于表格式数据。
完全正确。但是,如果您要保存数据框(如OP所示),那么您的数据将以表格形式显示。
有了你,你总会拥有 能够启动旧版本以读取数据并导出if 他们改变保存格式并且不允许旧格式的某种原因 由另一个函数加载。
要播放魔鬼的adovacate,您可以将此参数与Excel一起使用,并将数据保存为xls
。但是,以csv格式保存数据意味着我们永远不必担心这一点。
R&#39>文件格式已记录在案,因此可以很容易地进行 使用该打开信息读取另一个系统中的二进制数据。
我完全同意 - 尽管&#34;轻松&#34;有点强。这就是为什么保存为RData文件并不是一件大事。 但如果要保存表格数据,为什么不使用csv文件?
对于记录,将表格数据保存为RData文件有一些原因。例如,读取/写入文件或文件大小的速度。
答案 2 :(得分:10)
save
保存数据集的名称以及数据。因此,您不应该为load("data")
指定一个名称,您应该没事。换句话说,只需使用:
load("data")
它会将名为df
的对象(或文件“data”中包含的任何内容)加载到当前工作区中。
我建议为您的文件建议一个更原始的名称,并考虑添加一个扩展名来帮助您记住您的脚本文件,您的数据文件等等。
通过这个简单的例子:
rm(list = ls()) # Remove everything from your current workspace
ls() # Anything there? Nope.
# character(0)
a <- 1:10 # Create an object "a"
save(a, file="myData.Rdata") # Save object "a"
ls() # Anything there? Yep.
# [1] "a"
rm(a) # Remove "a" from your workspace
ls() # Anything there? Nope.
# character(0)
load("myData.Rdata") # Load your "myData.Rdata" file
ls() # Anything there? Yep. Object "a".
# [1] "a"
str(a) # Is "a" what we expect it to be? Yep.
# int [1:10] 1 2 3 4 5 6 7 8 9 10
a2 <- load("myData.Rdata") # What about your approach?
ls() # Now we have 2 objects
# [1] "a" "a2"
str(a2) # "a2" stores the object names from your data file.
# chr "a"
正如您所看到的,save
允许您一次保存和加载多个对象,这在处理具有多组数据的项目时非常方便。
另一方面,saveRDS
(来自the accepted answer)只允许您保存单个对象。在某些方面,这是load()
doesn't let you preview the contents of the file以来更加“透明”而没有先加载它。