gpt4 book ai didi

r - 在 R 工作流程中编写函数与逐行解释

转载 作者:行者123 更新时间:2023-12-04 02:31:30 24 4
gpt4 key购买 nike

这里已经写了很多关于在 R 中为统计项目开发工作流的文章。最受欢迎的工作流程似乎是 Josh Reich's LCFD model .与 main.R包含代码:

source('load.R')
source('clean.R')
source('func.R')
source('do.R')

这样一个 source('main.R')运行整个项目。

问:与在 load.R 中完成逐行解释工作的工作流程相比,是否有理由更喜欢这种工作流程? , clean.R , 和 do.Rmain.R 调用的函数替换?

我现在找不到链接,但是我在某处读过 SO,当在 R 中编程时,必须克服他们希望根据函数调用编写所有内容的愿望——R 本来就是要写的,这就是这一行-line 解释形式。

问:真的吗?为什么?

我对 LCFD 方法感到沮丧,并且可能会根据函数调用编写所有内容。但在此之前,我想听听 SO 的好人说这是否是个好主意。

编辑:我现在正在做的项目是(1)读取一组财务数据,(2)清理它(相当复杂),(3)使用我的估计器估计与数据相关的一些数量(4)使用传统估算器估算相同数量 (5) 报告结果。我的程序应该以这样一种方式编写,即(1)针对不同的经验数据集,(2)针对模拟数据,或(3)使用不同的估计器来完成工作是轻而易举的事。此外,它应该遵循有文化的编程和可重复的研究指南,以便代码新手可以轻松运行程序,了解正在发生的事情以及如何调整它。

最佳答案

我认为在源文件中创建的任何临时内容都不会被清理。如果我做:

x=matrix(runif(big^2),big,big)
z=sum(x)

并将其作为文件源,尽管我不需要它,但 x 仍然存在。但如果我这样做:
ff=function(big){
x = matrix(runif(big^2),big,big)
z=sum(x)
return(z)
}

而不是源,在我的脚本中执行 z=ff(big),x 矩阵超出范围,因此被清理。

函数可以实现简洁的、可重复使用的封装,并且不会污染外部。一般来说,它们没有副作用。您的逐行脚本可能使用与当前使用的数据集相关的全局变量和名称,这使得它们无法重用。

我有时会逐行工作,但一旦我得到超过五行代码,我就会发现我真正需要将其制作成一个适当的可重用函数,而且我常常最终会重用它。

关于r - 在 R 工作流程中编写函数与逐行解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5365974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com