我想找到用于在R中计算的脚本.R文件的位置.
我知道通过键入对象函数,我将获得正在运行的代码,然后我可以复制和编辑并将其保存为新的脚本文件并使用它.
要求查找foo.R文件的原因是
如果可能的话,我正在寻找更一般的答案.
编辑:根据目前为止的评论,这里是使用自回归方法计算时间序列谱的代码.数据输入是单变量系列.
x = ts(data)
spec.ar(x, method = "yule-walker") 1
spec.ar(x, method = "burg") 2
Run Code Online (Sandbox Code Playgroud)
命令1运行正常.命令2给出以下错误.
Error in ar.burg.default(x, aic = aic, order.max = order.max, na.action = na.action, :
Burg's algorithm only implemented for univariate series
Run Code Online (Sandbox Code Playgroud)
我确实尝试正确指定所有参数,如na.action = na.fail,order.max = NULL等,但消息是相同的.请建议可能的解决方案.
PS(这个问题是在搜索安装了R的库文件夹和zip文件后发布的,这些文件随包,手册和打开.rdb,.rdx文件一起提供)
请参阅FAQ 7.40 如何访问函数的源代码?
在大多数情况下,键入函数名称将打印其源代码.但是,代码有时隐藏在命名空间中或编译.有关如何访问源代码的完整概述,请参阅Uwe Ligges(2006),"帮助台:访问源",R News,6/4,43-45(http://cran.r-project.org/ DOC/Rnews/Rnews_2006-4.pdf).
.libPaths()应该告诉您当前所有的图书馆位置。如果有两个库,但仅使用第一个库中的那个,则可以安装多个包。除非您提供代码和确切的错误消息,否则任何人都不太可能提供更好的建议。
我想您是在要求查看我所说的包中函数的源代码。如果是这样,我的做法如下,在我尝试过的 3 次中,这对我来说都成功了。我将这些说明放在了几个地方,然后将它们复制并粘贴到了这里:
要查看程序 R 中某个函数的源代码,请下载包含该函数的包。具体来说,下载以“tar.gz”结尾的文件。这是一个压缩文件。例如,使用“WinZip”展开压缩文件。现在您需要打开以“.tar”结尾的未压缩文件。下载免费软件“7-Zip”。单击文件“7zFM.exe”并导航到包含“.tar”文件的目录。您可以将该“.tar”文件的内容提取到一个新文件夹中。内容由 R 文件组成,其中显示了 R 包中函数的源代码。
编辑:
今天(2012 年 7 月 8 日)我能够使用最新版本的“WinZIP”打开“tar.gz”文件,并且可以从那里复制内容(源代码)而无需使用“7-Zip”。
编辑:
今天(2013 年 1 月 19 日)我通过下载文件“R-2.15.2.tar.gz”查看了基 R 中函数的源代码
要下载该文件,请转到http://cran.at.r-project.org/网页,然后单击此行中的该文件:
“最新版本(2012-10-26,Trick or Treat):R-2.15.2.tar.gz,阅读最新版本的新内容。”
解压缩文件。WinZip 会起作用,或者它对我有用。然后在您的计算机上搜索readtable.r或其他基本 R 函数。
agstudy 在这里指出/sf/ask/1009205011/ 的源代码read.csv位于文件中readtable.r,所以不要指望每个基本 R 函数都有自己的文件。
当R安装包时,它会评估所有".R"源文件,并将它们重新保存为二进制格式,以便加快加载速度.因此,您通常无法轻松找到源文件.
正如其他地方所建议的那样,您只需键入函数名称并查看源代码,或下载源包并在那里找到源代码.
library(plyr)
ddply # prints the source for ddply
# See the content of the R directory for plyr,
# but it's only binary files:
dir(file.path(find.package("plyr"), "R"))
# [1] "plyr" "plyr.rdb" "plyr.rdx"
# Get the source for the package:
download.packages("plyr", "~", type="source")
# ...then unpack and inspect the R directory...
Run Code Online (Sandbox Code Playgroud)