我定期编程.好吧,我一直在编程,但有时会以内存错误的形式赶上我.我开始在使用rm()命令删除对象时执行一些纪律,事情变得更好.我在网上看到有关gc()在删除大型数据对象后是否应该显式调用的混合消息.有人说在R返回内存错误之前它会运行,gc()而其他人则说手动强制gc是一个好主意.
我应该gc()在删除大型对象后运行以确保最大的内存可用性吗?
我已经使用R一年多一点了,这是一次成功的冒险.但是,我经常发现,由于不知道如何找到它或它的一个例子,我无法弄清楚.
堆栈溢出,
您是否可以推荐一种学习R的途径,以便为其提供一个工具集来解决统计问题?
在互联网上,r项目网站和邮件列表之间有丰富的知识,但它似乎"无处不在",而且当你真正寻找它时无处可去.
例如,当我第一次开始使用R时,我经历了"Intro to R".然后我读了语言定义(显然没有沉没).但是每当我在Stackoverflow上问一个问题时,我都会遇到一些新的badass函数,它可以解决我在短期内遇到的所有问题.我的问题是,您是如何知道这些功能首先存在的?如何找到它们?据推测,你读过一些东西或找到一些资源,使你的学习成为曲线的指数部分.它以前如何?
显然,R作为统计工具的功能很广泛.出于我自己的目的,我主要从事经济或财务数据.因此,考虑到这一点的答案将是最有帮助的.
编程有哪些好的做法R?
由于R我不是一直使用的特殊用途语言,我通常只是将一些快速脚本组合在一起,以满足我的需求.
但是编写干净,高效的R代码有哪些技巧?
我记得R用户写过他们使用"版本控制"(例如:"源代码控制"),我很想知道:你如何将"版本控制"与统计分析工作流程结合起来?
两个(非常)有趣的讨论谈论如何处理工作流程.但它们都没有引用修订控制元素:
对问题的长期更新:根据一些人的答案,以及评论中的Dirk的问题,我想更多地指出我的问题.
在阅读了关于" 版本控制 " 的Wiki文章(我以前不熟悉)之后,我很清楚,在使用版本控制时,我们所做的就是构建他的代码的开发结构.这种结构要么导致"最终产品",要么导致几个分支.
当建立类似的东西时,比方说,一个网站.通常有一种最终产品(网站),一路上有一些原型.
但在进行统计分析时,工作(我认为)是不同的.有时你知道你想去哪里.但更多时候,你会探索.探索清理数据集.探索不同的统计分析方法,并询问您的数据的各种问题(我正在写这篇文章,了解Frank Harrell和其他经验统计学家对数据挖掘的看法).
这就是为什么统计编程的工作流程问题(在我看来)是一个严肃而深刻的问题,引发了许多问题,更简单的问题是技术问题:
如何你解决这种紧张是我最初的好奇.第二个问题是"我可能会缺少什么?".应该遵循哪些(经验)规则,以避免使用版本控制进行统计编程时常见的陷阱?
在我的直觉中,我觉得统计编程本质上与软件开发不同(我写的不是统计编程的真正专家,在软件开发中更是如此).这是我不确定我在这里阅读的关于版本控制的哪些课程将适用的方式.
非常感谢,Tal
任何人都可以在ESS下分享他在R peject开发工作流程方面的经验吗?我试过几次学习emacs,但我还没有得到它.我可以将ESS理解为编辑器,但ESS中是否有项目视图?什么是设置/查看R项目目录,编码和测试的有效方法,以及ESS如何有利于整个过程?
您是仅将ESS用作优秀的R编辑器还是倾向于在ESS中模拟R IDE环境?
感谢您的任何建议.
如果之前有人问过我很抱歉,但我找不到答案.
假设我在R中写了一个小函数
add2<-function(a){
return(a+2)
}
Run Code Online (Sandbox Code Playgroud)
我将其保存为我的主目录(或任何目录)中的add2.R.我怎样让R找到它?
> add2(4)
Error: could not find function "add2"
Run Code Online (Sandbox Code Playgroud)
我知道我可以打开脚本,将其复制/粘贴到控制台中,运行它,然后它就可以了.但是如何让它内置,所以如果我打开和关闭R,它仍然在没有我复制并粘贴它的情况下运行?
统计分析/编程,正在编写代码.无论是描述性的还是推论性的,您都可以编写代码:导入数据,清理数据,分析数据和编译报告.
分析数据可能涉及许多曲折的统计程序,以及您查看数据的角度.最后,您有许多文件,包含许多代码行,可以对您的数据执行任务.其中一些是可重复使用的,你将它封装为"有好处"的功能.
这个"统计分析"过程对我来说就像"编程"一样,但我不确定每个人的感受是否一致.
术语软件开发通常用于指计算机编程的活动,计算机编程是编写和维护源代码的过程,而术语的更广泛意义包括所需软件的概念到软件的最终表现形式.因此,软件开发可能包括研究,新开发,修改,重用,重新设计,维护或导致软件产品的任何其他活动.对于通常由一组人开发的较大的软件系统,通常遵循某种形式的过程来指导软件的生产阶段.
根据这个简单的定义(以及我的拙见),这听起来非常像建立统计分析.但我想这不是那么简单.
这引出了我的问题:你能在两个活动之间勾勒出什么样的差异?
它可以是技术方面,不同的策略或工作方式,以及您认为相关的其他内容.
这个问题来自以下主题:
我是一名统计学研究生,他与R一起工作很多.我在其他编程环境中熟悉OOP.我甚至看到它在各种统计包中的使用,这些包定义了用于存储数据的新类.
在我毕业生的这个阶段,我通常会编写一些算法来进行某些类的分配 - 这需要原始数据并提供某种输出.我希望能够更容易地重用代码,并建立良好的编码习惯,特别是在我进行更多涉及的研究之前.请在R中进行统计编程时提供一些关于如何"思考OOP"的建议.
我想弄清楚R Studio中的保存是如何工作的.
当我创建一个新项目时,会创建一个.RProj文件.每当我在R Studio中工作时,"保存"和"另存为"都会在"文件"菜单中显示为灰色.我知道如何创建.RProj文件的唯一方法是启动一个新项目.
在环境部分,我可以看到一张软盘Save图标.当我单击它时,它会创建一个.RData文件.当我想要保存时,我点击该保存图标并覆盖该文件.
有人可以解释一下使用R Studio时保存的最佳实践以及.RProj和.RData文件之间的关键区别吗?
这里已经写了很多关于在R中为统计项目开发工作流程的文章.最受欢迎的工作流程似乎是Josh Reich的LCFD模型.使用main.R包含代码:
source('load.R')
source('clean.R')
source('func.R')
source('do.R')
Run Code Online (Sandbox Code Playgroud)
这样一个单独source('main.R')运行整个项目.
问:是否有一个理由,更喜欢这个工作流程的一个该行由行解释工作做的load.R,clean.R以及do.R是由被调用的函数代替main.R?
我现在找不到这个链接了,但是我已经在某个地方看过,当在R中编程时,必须克服他们用函数调用来编写所有内容的愿望 - 这就是R代表写的是这个行 - 解释形式.
问:真的吗?为什么?
我对LCFD方法感到沮丧,我可能会根据函数调用编写所有内容.但在此之前,我想听听SO的优秀人士是否这是一个好主意.
编辑:我正在进行的项目是(1)读取一组财务数据,(2)清理它(非常复杂),(3)使用我的估算器估算与数据相关的一些数量(4)使用传统估算器估算相同数量(5)报告结果.我的程序应该以这样的方式编写,即对于不同的经验数据集(1)进行模拟数据,或(3)使用不同的估计器,这是一项工作(1).此外,它应该遵循有文化的编程和可重复的研究指南,以便新的代码运行程序,了解正在发生的事情,以及如何调整它.
我有大量的时间序列(> 100),它们的采样频率和可用时间不同.每个时间序列都必须进行单位根和季节性调整以及其他初步数据转换和检查等的测试.
由于必须定期检查大量系列,有效解决方案是什么?关注的是节省常规方面的时间并跟踪系列和分析结果.例如,该系列的单位根测试是主观的.这种类型的分析可以自动化多少以及如何进行?
我已经阅读了有关统计工作流程的问题,这些问题建议在每个系列上运行一个通用脚本.
我根据处理多个时间序列数据集的经验询问更具体的内容.重点更多的是在处理如此多的系列时最大限度地减少错误,同时自动执行重复性任务.
在函数中包含执行函数所需的每个库是不错的做法?
例如,我的文件global.r包含了闪亮应用程序所需的几个功能.目前我在文件顶部有所有需要的包.当我切换项目/复制这些功能时,我必须加载包/将它们包含在新代码中.否则所有需要的包都包含在该函数中.当然,我必须使用新的R会话检查所有功能,但我认为从长远来看这可能有所帮助.
当我尝试加载包两次时,它不会再次加载包,但检查它已经加载.我的主要问题是,如果我以这种方式进行重组,是否会减慢我的功能?
我只看过一次练习,库调用函数内部,所以我不确定.
r ×12
statistics ×4
workflow ×3
emacs ×1
ess ×1
function ×1
matlab ×1
rstudio ×1
time-series ×1
user-defined ×1