gpt4 book ai didi

r - 在 R 中从 [包] 导入 [函数]

转载 作者:行者123 更新时间:2023-12-04 05:11:38 26 4
gpt4 key购买 nike

在 Python 或 R 中处理数据时,我们经常加载多个包。在某些情况下,两个包(例如 foobar )可能都包含一些函数(例如 do_stuff )。

在 Python 中管理它以防止歧义或意外的方式如下:

from foo import do_stuff
from bar import other_function # (does not load/import do_stuff() from bar)

在 R 中,我看到的所有代码都只导入了整个包
多个 library(package_name)声明。我认为这会导致非常难以捕捉的错误。例如,参见 Reordering factor gives different results, depending on which packages are loaded .事实上,即使“没有掩码,因为 reorder.factor 不存在于 base 中”,也会发生这种情况。

我希望这个问题的一般答案类似于 from package import function上面的代码,但不是。事实上,公认的(也是唯一的)答案只是解释了问题存在的原因(而不是淡化该贡献)。答案的评论中提供了一种解决方法,但该解决方法特定于该特定功能 ( reorder )。

有没有一种通用的方法可以只从 R 中的特定包中导入特定函数?这样我就可以对代码中所有函数调用的来源进行深思熟虑和明确,并确保它们按照我认为的那样做?

最佳答案

您可以使用 package::function() 明确告诉 R 应该为给定函数使用哪个包。 build 。您甚至可以使用它来调用尚未加载的包中的函数 library .

library(dplyr) # Has a function called filter()
library(plyr) # Also has a filter() function

dplyr::filter(foo)
plyr::filter(bar)

如果您想确保将代码混淆的可能性降至最低,我强烈推荐 conflicted包,强制您为所有不明确的函数调用明确标识包: https://www.tidyverse.org/articles/2018/06/conflicted/

关于r - 在 R 中从 [包] 导入 [函数],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45150870/

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