R中环境的目的是什么?当我需要使用多个环境时?

use*_*rJT 4 r

这是一个基本的R问题:R具有环境概念.那它的目的是什么,我什么时候需要启动一个以及如何在它们之间切换?多个环境的优势是什么(除了查找.Rdata文件的内容之外)?

Gre*_*now 7

环境的概念很重要,你一直都在使用它们,大多数时候都没有意识到.如果您只是使用R并且没有做任何花哨的事情,那么间接使用环境就是您所需要的,您不需要显式创建和操作环境.只有当您进入更高级的使用时,您才需要了解更多.您使用(间接)环境的主要位置是每个函数都有自己的环境,因此每次运行函数时都使用新环境.为什么这很重要是因为这意味着如果函数使用名为"x"的变量并且您有一个名为"x"的变量,那么计算机可以保持它们笔直并在需要时使用正确的变量和"x"的副本"不会被功能版本所覆盖.

您可能使用环境的其他一些情况:每个包都有自己的环境,因此2个包都可以加载内部函数的相同名称,并且它们不会相互干扰.您可以通过附加新的环境并将功能定义加载到该环境而不是全局或工作环境中来使您的工作区更加清洁.当您编写自己的函数并希望在函数之间共享变量时,您需要了解环境.如果您处于重要的情况(如果您不认识那些短语,那么它可能无关紧要),可以使用Environmets模拟传递引用而不是传值.


Mat*_*rde 6

你可以把environments视为无序list的.两种数据类型都向用户提供类似哈希表数据结构的东西,即从名称到值的映射.environment与list类似任务相比,s中缺少排序可提供更好的性能.

访问功能[[和$两者都有用.

关于environments的一个不错的事实list是environments在作为函数参数提供时通过引用传递,提供了一种在处理大对象时提高性能的方法.

  • 这并非完全正确 - 列表未实现为哈希表,哈希表是在您对其进行子集时构建的.有些环境是作为哈希表实现的,而其他环境只是链表. (2认同)

Pau*_*tra 4

就我个人而言,我从不直接与环境打交道。相反,我将脚本划分为函数。这会提高可重用性和更多的结构。此外,每个函数都在自己的环境中运行,确保变量等的干扰最小。