标签: rda

R数据格式:RData,Rda,Rds等

.RData,.Rda和.Rds文件之间的主要区别是什么?

进一步来说:

  • 压缩等方面是否存在差异?
  • 应该何时使用每种类型?
  • 如何将一种类型转换为另一种类型?

r rda r-faq rdata

203
推荐指数
2
解决办法
12万
查看次数

如何处理包内部的R数据?

我正在开发的R包需要几个R数据对象,例如预先计算的模型和参数.

目前,我将每个对象放在包的'data'目录中的各个.RData文件中.使用包时,用户可以使用"数据"功能将这些对象附加到其环境中.

我想要的行为是,在加载包时,数据对象会自动附加到内部包环境,而用户无法直接访问.

我的理解是将'sysdata.rda'文件放在包含当前在'data'中的对象的包的'R'目录中将给出我想要的结果.但是,有没有办法做到这一点,以便我可以将每个对象放在一个单独的文件而不是组合在一起?

load r internal package rda

31
推荐指数
2
解决办法
7959
查看次数

RDA,colMeans中的错误(x,na.rm = TRUE):当数据是数字时,'x'必须是数字?

我想使用素食主义者在R中执行rda.

我的代码看起来像这样:

species<- read.delim("springspecies1.txt", header=T)
envdata<- read.delim("springenv1.txt", header=T)

RDA <- rda(species~Temperature + Salinity + O2 + Phosphate + Nitrate + Silica, envdata, scale=T, na.action=na.omit)
Run Code Online (Sandbox Code Playgroud)

我收到错误信息:

Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
Run Code Online (Sandbox Code Playgroud)

当我检查我的数据时,我得到:

sapply(species, mode)
      Station          Year         Month     S.marinoi      C.tripos 
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric" 
      P.alata     P.seriata    R.setigera    C.pelagica D.confervacea 
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric" 
  C.decipiens    P.farcimen       C.furca 
    "numeric"     "numeric"     "numeric"
Run Code Online (Sandbox Code Playgroud)

我的数据集中没有NA或空格.但似乎物种数据集是问题所在.我用物种编译了一个新的数据集,但我又遇到了同样的问题.有任何想法吗?

r rda vegan

13
推荐指数
1
解决办法
3万
查看次数

当作为远程桌面应用程序运行时,Delphi TOpenDialog在Windows 2008中挂起

我有一个Delphi 2010 exe,它启动了第二个exe.在第二个exe中,有一个调用openDialog.execute的对话框.当它在远程桌面下的Windows 2008 Enterprise R2下运行,它会按预期运行,但是当作为远程应用程序运行时,只要弹出文件对话框,应用程序就会挂起,将所有应用程序窗口都变为白色.摆脱它的唯一方法是终止应用程序.我尝试用TFileOpenDialog替换TOpenDialog,结果是一样的.我已经考虑修改启动主应用程序的RDP文件,但是看不到任何会产生影响的参数.以前有没有人见过这种行为?


2010.07.13更新

这可以使用一个简单的例子重现.示例中有两个可执行文件.第一个是文件启动器,名为m_module.exe,它包含一个编辑,一个按钮和下面的代码.在单击启动按钮之前,我在编辑中更改可执行文件的名称以匹配第二个可执行文件:

procedure TForm1.Button1Click(Sender: TObject);
begin
     ShellExecute(Handle, 'open', stringToOLEstr(edit1.text) , nil, nil, SW_SHOWNORMAL) ; 
end;

procedure TForm1.FormShow(Sender: TObject);
begin
     edit1.text:=application.exename;
end;
Run Code Online (Sandbox Code Playgroud)

第二个可执行文件包含一个按钮,代码如下:

procedure TForm1.Button1Click(Sender: TObject);
begin
     OpenDialog1.execute;
end;
Run Code Online (Sandbox Code Playgroud)

第一个模块是从RDP文件启动的.

2010.07.14更新

我发现如果我复制以下dll:

thumbcache.dll 
dtsh.dll 
wkscli.dll 
Run Code Online (Sandbox Code Playgroud)

从\ Windows\System32文件夹进入应用程序文件夹,问题就消除了.

我进一步发现将\ Windows\System32文件夹中这些dll的所有权和权限级别从TrustedInstaller更改为管理员组具有相同的结果(将它们复制到应用程序目录正在改变我认为的所有权和权限)

为了确认这一点,我确认如果我将所有权和权限级别更改回远离管理员组的TrustedInstaller,则会再次出现错误.

所以看来这是某种访问问题.也许这有助于发现问题的原因.

2010.07.18更新

一些可能有用的其他信息(由Embarcadero提供):

这篇关于GetWindowsDirectory的MSDN文章http://msdn.microsoft.com/en-us/library/ms724454%28VS.85%29.aspx记录了在终端服务下运行的应用程序的一些有趣行为.虽然没有直接调用GetWindowsDirectory,但每个用户的Windows系统目录的沙盒可能会导致某种问题.也许GetOpenFileNameA的调用链中的一个DLL试图引用真实系统目录中的真实DLL而不是沙盒,从而导致权限违规.这只是猜测,但值得研究.如果您能够在服务器上运行SysInternals Process Monitor或Process Explorer,您应该能够看到commdlg32和堆栈跟踪中的其他DLL被加载.

所有旧应用程序(即,未为终端服务或远程桌面服务创建的所有应用程序)都在应用程序兼容性层下运行.请参阅此MSDN文章http://msdn.microsoft.com/en-us/library/cc834995%28VS.85%29.aspx.IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE标志在Windows.PAS中定义.出于测试目的,您可以将Windows添加到应用程序的PE头部,方法是将Windows添加到应用程序的USES部分,并在USES部分下面添加:

{$ SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}

这将导致您的应用程序绕过兼容层.我目前正在调查产生的进程(例如你的第二个exe)是否保留了在RDS下定义的应用程序的所有权限和设置.

windows delphi rda

12
推荐指数
1
解决办法
5977
查看次数

通过在R中加载.rda文件获取数据帧的名称

我正在尝试在r中加载一个.rda文件,这是一个保存的数据帧.我不记得它的名字.

我试过了

a<-load("al.rda")
Run Code Online (Sandbox Code Playgroud)

然后我不会让我做任何事情.我收到了错误

Error:object 'a' not found
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用=符号.

如何加载此.rda文件以便我可以使用它?

我用负载("al.rda")重新调整了R,我知道得到以下错误

Error: C stack usage is too close to the limit
Run Code Online (Sandbox Code Playgroud)

load r rda dataframe

6
推荐指数
3
解决办法
1万
查看次数

同步噩梦 - 是否可以在没有IIS的2个SQL CE实例之间使用合并复制(或RDA)?

我们面临以下问题,涉及保持以下同步:

  • 1集中服务器(IIS/MSSQL 2005)
  • ClickOnce分发的许多桌面WPF客户端
  • 许多移动客户端 - (Windows CE)

alt text http://img502.imageshack.us/img502/8246/deployment.png

有了这些棘手的限制:

  • 所有同步关系都是双向的
  • 桌面和移动节点需要离线模式
  • 移动节点不能与中央服务器同步,而是通过USB与桌面节点同步.桌面节点充当移动客户端的服务器,而不是中央服务器.然后,移动节点的更新需要通过与桌面同步传播到中央服务器,然后将该桌面与中央服务器同步. p.

讨厌.

为了同步桌面和服务器,我们知道我们可以使用合并复制 - 服务器是提供商,桌面作为订户,一切都很好.但是同步移动和桌面节点呢?看似桌面不能是没有SQL Server + ISS的发布者,对吧?我们只能将MSSQL CE部署到桌面.

即使是这种情况,节点既可以是订户又可以是发布者?我怀疑Merge Replication架构不支持这种安排 - 看起来hub和spoke是唯一受支持的模型.

我们正在尝试确定是否可以取消RDA或合并复制作为可能的解决方案 - 如果是这样,我们可能会继续使用MS Sync Framework.

也许我们可以考虑其他技术?

谢谢大家,

阿什利

更新:我们刚刚开始玩MS Sync Framework,它摇滚!

distributed merge-replication rda microsoft-sync-framework

5
推荐指数
1
解决办法
2317
查看次数

将多个 .rda 文件加载到 r 中的列表中

我运行了各种模型(glm、rpart、earth 等)并将模型对象从每个模型对象导出到我计算机上的一个文件夹中。所以我现在有一个文件夹,其中包含大约 60 个不同的模型,这些模型存储为单独的 .rda 文件。

这是通过创建一个模型函数然后通过 purrr 映射包将其应用于模型类型列表来完成的(以避免错误和终止)。

我现在想将它们加载回 r 并进行比较。不幸的是,当我编写初始模型脚本时,每个模型都存储为相同的即“Model.Object”(我不知道否则该怎么做),因此当我尝试将每个模型单独加载到 r 时,它只是相互覆盖。每个文件都保存为 glm.rda、rpart.rda、earth.rda 等,但其中的模型被标记为 Model.Object(为了澄清)。

所以我想我有几个问题;1. 可以将多个 .rda 文件加载到 r 到一个列表中,然后可以将其编入索引 2. 如何更改已应用的模型函数,以便“model.object”名称读取为模型类型(例如glm、rpart 等)

代码:

    Model.Function = function(Model.Type){

  set.seed(0)
  Model.Output = train(x = Pred.Vars.RVC.Data, y = RVC, trControl = Tcontrolparam,
                       preProcess = Preprocessing.Options, tuneLength = 1, metric = "RMSE",
                       method = Model.Type)

    save(Model.Object, file = paste("./RVC Models/",Model.Type,".rda", sep = ""))

  return(Model.Object)

}

Possibly.Model.Function = possibly(Model.Function, otherwise = "something wrong here")

result.possible = map(c("glm","rpart","earth"), Possibly.Model.Function)
Run Code Online (Sandbox Code Playgroud)

r save rda purrr

4
推荐指数
1
解决办法
2128
查看次数

R,使用 load() 从 .rda 对象分配内容

这是非常基本的(我怀疑其他地方已经问过这个问题,尽管这里不完全是这样)。

我有大量 .rda 文件,每个文件都有一个数据帧。我想对每个数据帧进行计算,因此需要加载它们(load())。如果它们是 .RDS 对象,我会这样:

#My data
x <- data.frame(a=1:3)
y <- data.frame(a=3:6)

#Save as RDS 
saveRDS(x, file = "x.rds")
saveRDS(y, file = "y.rds")

files <- c("x.rds", "y.rds")
data <- lapply(files, readRDS)

#Do something with the data in the list "data"
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用做类似的事情,load因为你不能将数据(只能是名称)分配给变量:

x <- data.frame(a=1:3)

> x
  a
1 1
2 2
3 3

save(x, file= "x.rda")
x <- load("x.rda")

> x
[1] "x"
Run Code Online (Sandbox Code Playgroud)

types load r rda

3
推荐指数
1
解决办法
2069
查看次数

eval(predvars, data, env) 中的错误:“character”类型的“envir”参数无效

我是 R 新手,开始在 RStudio 中使用非常简单的代码进行线性回归,如下所示:

dataset = load("C:\\pathToRDA\\swiss.RDA")

simple.fit = lm(formula = VoteYes ~ age,data=dataset)
Run Code Online (Sandbox Code Playgroud)

示例代码加载到一个 RDA 文件中,其中包含一个对象 s。

运行后,我遇到了一个非常常见的错误:

Error in eval(predvars, data, env) :  invalid 'envir' argument of type 'character' 
Run Code Online (Sandbox Code Playgroud)

经过谷歌搜索一段时间后,我认为该错误与

data=dataset
Run Code Online (Sandbox Code Playgroud)

部分,因为我在 Google 上遇到的最类似错误是数据集是字符串而不是变量引用。但我认为在我的例子中,数据集确实不是字符串,如本教程中所示:

教程

在此先感谢您的任何建议!

r rda rstudio

3
推荐指数
1
解决办法
1万
查看次数

为什么我不能在 R 中使用应用函数将 .rda 文件加载到 R 工作区?

我有一个 .rda (RData) 文件列表。我想快速将此数据加载到 R 中,而不必load多次调用该函数。我想到将load()函数与sapply. 但是,使用以下代码,不会在工作区中加载任何 R 对象:

# List files    
gewataPath <- list.files(path = file.path(datdir), pattern = glob2rx('Gewata*.rda'), full.names = T)
# Load files
sapply(gewataPath, function(file) {load(file)})
Run Code Online (Sandbox Code Playgroud)

它也不会给任何错误。

运行循环确实会将 .rda 文件作为 RasterLayer 对象加载到 R 工作区中:

for (i in 1:length(gewataPath)) {
  load(gewataPath[i])
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我不能使用apply()函数将 .rda 文件快速加载到 R 工作区中,我是否必须使用循环?

关于数据:数据包含位于埃塞俄比亚 Gewata 的 RasterLayers(来自 Landsat 卫星)。

r raster rda sapply

2
推荐指数
1
解决办法
268
查看次数

R CMD检查和.RDa数据文件

我在数据子目录下有.RDa格式的数据文件.但是,该R CMD check命令无法识别该load("test.RDa")命令及其在此阶段失败并发出以下错误:

Warning in readChar(con, 5L, useBytes = TRUE) :  
cannot open compressed file 'test.RDa', probable reason 'No such file or directory'  
Error in readChar(con, 5L, useBytes = TRUE) : cannot open the connection  
Calls: load -> readChar  
Execution halted  
Run Code Online (Sandbox Code Playgroud)

你能告诉我原因吗?我应该指定一个路径来指定从哪里加载?

r rda

1
推荐指数
1
解决办法
1775
查看次数