[英]What is `1..__truediv__` ? Does Python have a .. (“dot dot”) notation syntax?
[英]Does R have dot notation like Python?
我目前正致力于将代码库从 R 转换、重构和优化到 Python。
R 代码库大量使用source()
function。 据我了解,这类似于导入 python 文件。
在 python 中,我可以执行以下操作:
import
我的文件
我的文件。 some_function_or_variable_in_the_file
好像你不能在 R 中执行此操作,这意味着我必须查看source()
function 中的 R 文件才能了解函数和变量。
此外,在没有::
或的情况下从另一个文件调用 function 或变量似乎是不好的做法.
因为此语法在左侧指示文件源,在右侧指示变量或 function 名称。
当你在 R 工作室时,这可能不是什么大问题,但我在 Jupyter 实验室工作,负责 R 和 Python 的工作。 如果我不必总是查看我引用的文件,那就太好了。
在我的谷歌搜索中,我一无所获。 任何帮助或信息都会有所帮助。
source
可以将 R 脚本导入到环境中,然后可以通过限定访问对象。
myfile <- environment()
source("myfile.R", myfile)
myfile$fun(x, y, z) # call fun from myfile passing x, y and z
ls(myfile) # show what was sourced into the myfile environment
另请查看sys.source
function,它提供了source
的变体,还检查了 CRAN 上的框和导入包。
source()
就像您将该源文件的代码放入相同的脚本/代码中一样。 源文件中的所有内容 - 都在同一个命名空间中 - 没有区别。 所以它不能与 Python 中的import
相比较。而是在 Python exec(open('filename').read())
或:
with open('filename') as f:
exec(f.read())
R,到此为止,如果要有namespace,还得生成一个package。
凡 function
source_as_ns <- function(namespace, file){
ns <- namespace::makeNamespace(namespace)
source(file, local = ns)
base::namespaceExport(ns, ls(ns))
}
给出。 和
# script.R
foo <- function(x) x + 1
您可以致电:
source_as_ns("bar", "script.R")
bar::foo(1)
# 2
@G.Grothendieck 的答案也有效 - 但它的行为不太像 package,因为运算符是$
而不是::
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.