.RData,.Rda和.Rds文件之间的主要区别是什么?
进一步来说:
使用时将变量保存在R数据文件中时save,它将以保存它的会话中的名称保存.当我稍后从另一个会话加载它时,它加载了相同的名称,加载脚本不可能知道.此名称可能会覆盖加载会话中同名的现有变量.有没有办法将数据文件中的对象安全地加载到指定的变量名中,而没有破坏现有变量的风险?
x = 5
save(x, file="x.Rda")
Run Code Online (Sandbox Code Playgroud)
x = 7
load("x.Rda")
print(x) # This will print 5. Oops.
Run Code Online (Sandbox Code Playgroud)
x = 7
y = load_object_from_file("x.Rda")
print(x) # should print 7
print(y) # should print 5
Run Code Online (Sandbox Code Playgroud) 我想将数据保存到.RData文件中.
例如,我想保存1.RData两个csv文件和一些信息.
在这里,我有两个csv文件
1) file_1.csv contains object city[[1]]
2) file_2.csv contains object city[[2]]
Run Code Online (Sandbox Code Playgroud)
并另外保存其他值,国家和人口如下.所以,我想首先需要从两个csv文件中创建对象'city'.
1.RData的结构可能如下所示:
> data = load("1.RData")
> data
[1] "city" "country" "population"
> city
[[1]]
NEW YORK 1.1
SAN FRANCISCO 3.1
[[2]]
TEXAS 1.3
SEATTLE 1.4
> class(city)
[1] "list"
> country
[1] "east" "west" "north"
> class(country)
[1] "character"
> population
[1] 10 11 13 14
> class(population)
[1] "integer"
Run Code Online (Sandbox Code Playgroud)
file_1.csv并file_2.csv有一堆行和列.
如何使用csv文件和值创建此类型的RData?
我看到了一些类似的问题,我试图自己解决,但我不能.这是我的问题:
我必须加载一个isfar.RData文件,以便在其他计算中使用它(这里描述并不重要).我想简单地看一下这个isfar.RData文件中的数据,例如它携带的数字,列和行.
首先我加载我的文件:
isfar<-load("C:/Users/isfar.RData")
Run Code Online (Sandbox Code Playgroud)
当我尝试通过ls()函数获取此信息(我正在使用Rcmdr)或在加载后在开头标记isfar时我进入输出窗口:[1]"isfar"而不是表.为什么?
非常感谢,我感谢所有的答案!希望我能够理解我所写的内容,我不是母语.
我有一个Rdata包含各种对象的文件:
New.Rdata
|_ Object 1 (e.g. data.frame)
|_ Object 2 (e.g. matrix)
|_...
|_ Object n
Run Code Online (Sandbox Code Playgroud)
当然我可以加载数据框load('New.Rdata'),但是,是否有一种智能方法只从该文件中加载一个特定对象并丢弃其他对象?
我有一堆.RData时间序列文件,并希望直接将它们加载到Python中,而无需先将文件转换为其他扩展名(例如.csv).有关实现这一目标的最佳方法的任何想法?
我发现自己处于需要更新之前使用的Rdata文件中的一个或两个数据对象的位置save.如果我不小心加载文件,我可能会忘记在文件中重新保存一些对象.作为一个例子,我正在处理一个存储有一些对象的包sysdata.rda(用于内部使用的查找表,我不想导出),只想担心更新单个对象.
如果有一种标准的方法可以做到这一点,我还没有成功,所以创建了我自己的功能.
resave <- function (..., list = character(), file = stop("'file' must be specified")) {
# create a staging environment to load the existing R objects
stage <- new.env()
load(file, envir=stage)
# get the list of objects to be "resaved"
names <- as.character(substitute(list(...)))[-1L]
list <- c(list, names)
# copy the objects to the staging environment
lapply(list, function(obj) assign(obj, get(obj), stage))
# save everything in the staging environment
save(list=ls(stage, all.names=TRUE), file=file)
}
Run Code Online (Sandbox Code Playgroud)
虽然看起来有点矫枉过正.有没有更好/更简单的方法来做到这一点?
顺便说一下,我是否正确地假设在函数调用之后在函数范围内创建的新环境被销毁?
不要saveRDS和readRDS,相应地,保存和恢复所有对象的属性,包括应用程序创建者(通过attr)?我试图使用这种方法而不是save和load,试图找到我的问题的解决方法链接在下面.但是,似乎并非如此,除非我做错了什么:我可以访问R数据对象的属性而无需从文件中完全加载对象吗?.
我想在Github上放一些R代码和相关的数据文件(RData).
到目前为止,一切正常.但是当人们克隆存储库时,我希望他们能够立即运行代码.目前,这是不可能的,因为他们必须将他们的工作目录(setwd)更改为RData文件被克隆(即下载)到的目录.
因此,我认为可能更容易,如果我更改R代码,使其链接到github上的RData文件.但我无法使用以下代码段来实现此功能.我想也许有一些问题文本/二进制问题.
x <- RCurl::getURL("https://github.com/thefactmachine/hex-binning-gis-data/raw/master/popDensity.RData")
y <- load(x)
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
谢谢
我有一个.RData文件可以在我的Linux(UTF-8)机器上读取,但我知道该文件是在Latin1中,因为我自己在Windows上创建了它们.不幸的是,我无法访问原始文件或Windows机器,我需要在我的Linux机器上读取这些文件.
要读取Rdata文件,通常的过程是运行load("file.Rdata").诸如read.csv有一个encoding参数的函数可以用来解决这类问题,但load没有这样的东西.如果我尝试load("file.Rdata", encoding = latin1),我只是得到这个(预期)错误:
加载错误("file.Rdata",encoding ="latin1"):unused argument(encoding ="latin1")
我还可以做些什么?我的文件加载了包含重音的文本变量,这些重音在UTF-8环境中打开时会被破坏.
r ×10
rdata ×10
encoding ×1
environment ×1
github ×1
linux ×1
object ×1
persistence ×1
persistent ×1
python ×1
r-faq ×1
rda ×1
utf-8 ×1