gpt4 book ai didi

r - R 中的编码实践 : what are the advantages and disadvantages of different styles?

转载 作者:行者123 更新时间:2023-12-03 02:36:13 25 4
gpt4 key购买 nike

最近有关使用 require 与::的问题引发了有关在 R 中编程时使用哪些编程风格以及它们的优点/缺点的问题。浏览源码或者网上浏览,你会看到很多不同的样式显示。

我的代码的主要趋势:

  • 重向量化我经常使用索引(和嵌套索引),这有时会导致代码相当晦涩,但通常比其他解决方案快得多。例如:x[x < 5] <- 0而不是x <- ifelse(x < 5, x, 0)

  • 我倾向于嵌套函数以避免因需要清理的临时对象而导致内存重载。特别是对于操作大型数据集的函数来说,这可能是一个真正的负担。例如:y <- cbind(x,as.numeric(factor(x)))而不是y <- as.numeric(factor(x)) ; z <- cbind(x,y)

  • 我编写了很多自定义函数,即使我只在例如中使用了一次代码。一个sapply 。我相信它可以使其更具可读性,而无需创建可以随处可见的对象。

  • 不惜一切代价避免循环,因为我认为矢量化更加干净(而且更快)

然而,我注意到对此有不同的看法,有些人倾向于放弃他们所谓的“Perl”编程方式(甚至是“Lisp”,所有这些括号在我的代码中飞来飞去.不过我不会走那么远)。

您认为 R 中良好的编码实践是什么?

您的编程风格是什么?您如何看待它的优点和缺点?

最佳答案

我做什么取决于我编写代码的原因。如果我正在为我的研究(日常工作)编写数据分析脚本,我想要一些可以工作但在几个月甚至几年后仍可读和可理解的东西。我不太关心计算时间。使用lapply等进行矢量化。可能会导致混淆,我想避免这种情况。

在这种情况下,如果lapply让我跳过障碍来构造适当的匿名函数,我会使用循环进行重复过程。我会在第一个项目符号中使用 ifelse() ,因为至少在我看来,该调用的意图比子集+替换版本更容易理解。在我的数据分析中,我更关心的是让事情正确,而不是计算时间——总有周末和晚上我不在办公室的时候,我可以处理大型工作。

对于你的其他子弹;我倾向于内联/嵌套调用,除非它们非常微不足道。如果我明确地阐明这些步骤,我会发现代码更易于阅读,因此不太可能包含错误。

我一直在编写自定义函数,特别是当我要在循环或类似情况中重复调用与该函数等效的代码时。这样,我将主数据分析脚本中的代码封装到它自己的 .R 文件中,这有助于将分析的意图与分析的完成方式分开。如果该功能有用,我会将其用于其他项目等。

如果我正在为一个包编写代码,我可能会以与数据分析(熟悉)相同的态度开始,以获得我知道有效的东西,然后只有在我想提高计算时间时才进行优化。

我试图避免做的一件事是,无论我编码的目的如何,当我编码时太聪明。归根结底,我有时并不像我想象的那么聪明,如果我让事情变得简单,我就不会像我试图变得聪明时那样经常摔倒。

关于r - R 中的编码实践 : what are the advantages and disadvantages of different styles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4406873/

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