想象一下,我们正在使用以下代码:
set.seed(42)
v <- sample(1:10, 100, T)
v <- sort(v)
unique.v <- unique(v)
Run Code Online (Sandbox Code Playgroud)
我可以确定unique.v已经排序了吗?
在更一般的设置中,是真的unique()返回一个向量,根据第一个条目排序吗?
文档并不意味着这一点,请与源代码联系
?unique
getAnywhere('unique.default')
Run Code Online (Sandbox Code Playgroud)
没有多大帮助.
我正在查看R中cov的source_code,并遇到一段我不太了解的代码段.
协方差的数学定义就在这里.
if (method == "pearson")
.Call(C_cov, x, y, na.method, method == "kendall")
else if ...
Run Code Online (Sandbox Code Playgroud)
帮助手册说明了.Call功能:
CallExternal {base} R Documentation
Modern Interfaces to C/C++ code
Description
Functions to pass R objects to compiled C/C++ code that has been loaded into R.
Run Code Online (Sandbox Code Playgroud)
我想知道在哪里可以找到如何计算C++或C等协方差的源代码.
谢谢.
我想学习如何optim(..., hessian=TRUE)计算Hessian,所以我看了一下函数的定义.接近结束时,它包括以下呼叫.External2():
if (hessian)
res$hessian <- .External2(C_optimhess, res$par, fn1,
gr1, con)
Run Code Online (Sandbox Code Playgroud)
看起来有一个名为外部C函数的调用C_optimhess,所以我grep是R源目录C_optimhess,但是空出来了.在R的代码库中只出现两次该字符串,一个在optim,一个在optimHess.这两个函数都定义在$R_SOURCE_DIR/src/library/stats/R/optim.R,并且该文件不包含其他提示/注释/引用.
optim帮助文件引用了几个函数的优化方法基于的代码,但是(似乎)没有指向源代码C_optimhess.
在这种情况下,我应该在哪里找到被调用的C代码.External2?
不妨让猫从袋子里拿出来,并说当我呼唤plot一个课堂对象时,我已经尝试了大约一天来弄清楚发生了什么SpatialPolygons*.我的直觉是寻找plot.SpatialPolygonsDataFrame,这种方法适用于我见过和遇到的任何其他例子,但这种方式失败了.
快速举例:
美国各州.shp文件在这里.
library(maptools)
us.states<-readShapePoly("cb_2014_us_state_5m.shp")
plot(us.states)
Run Code Online (Sandbox Code Playgroud)
有点邋but但是无论如何 - 关键是对一个简单的调用plot和内心深处R知道调用哪个方法以便为我们提供所有形状的表示.
经过一番搜索后,我尝试了各种SO Q&As提出的其他两种方法,首先是:
> methods(plot)
[1] plot.aareg* plot.acf*
[3] plot,ANY,ANY-method plot.cox.zph*
[5] plot.data.frame* plot.decomposed.ts*
[7] plot.default plot.dendrogram*
[9] plot.density* plot.ecdf
[11] plot.factor* plot.formula*
[13] plot.function plot.hclust*
[15] plot.histogram* plot.HoltWinters*
[17] plot.isoreg* plot.lm*
[19] plot.medpolish* plot.mlm*
[21] plot.ppr* plot.prcomp*
[23] plot.princomp* plot.profile.nls*
[25] plot.raster* plot.shingle*
[27] plot,SpatialGrid,missing-method plot,SpatialLines,missing-method
[29] plot,Spatial,missing-method plot,SpatialPixels,missing-method
[31] plot,SpatialPoints,missing-method plot,SpatialPolygons,missing-method
[33] plot.spec* plot.spline*
[35] plot.stepfun plot.stl*
[37] plot.survfit* …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个函数来完成一项特定的工作(在我的例子中,分析异常值的数据集),所以我想要做的第一件事就是看看其他人是如何完成类似的工作的.
我可以这样做来加载一个特定的包并检查一个函数的代码,但是一些函数似乎依赖于你抛出的对象类
>library(outliers)
> fix(outlier)
function (x, opposite = FALSE, logical = FALSE)
{
if (is.matrix(x))
apply(x, 2, outlier, opposite = opposite, logical = logical)
else if (is.data.frame(x))
sapply(x, outlier, opposite = opposite, logical = logical)
else {
if (xor(((max(x) - mean(x)) < (mean(x) - min(x))), opposite)) {
if (!logical)
min(x)
else x == min(x)
}
else {
if (!logical)
max(x)
else x == max(x)
}
}
}
Run Code Online (Sandbox Code Playgroud)
你如何看待根据对象改变的代码?
编辑:
好吧,Palm < - 面子.我作为一个例子使用的函数只调用它自己,但是他的代码就在那里......我已经看到了其他的例子(但是不能想到任何随便的)函数确实做了其他事情,这取决于抛出的对象的类在它,所以问题,即使这是一个坏的例子!
我正在努力理解lmer的功能.我已经找到了很多关于如何使用命令的信息,但没有太多关于它实际做了什么(除了一些神秘的评论:http://www.bioconductor.org/help/course-materials/2008/PHSIntro/ lme4Intro-handout-6.pdf).我正在玩以下简单的例子:
library(data.table)
library(lme4)
options(digits=15)
n<-1000
m<-100
data<-data.table(id=sample(1:m,n,replace=T),key="id")
b<-rnorm(m)
data$y<-rand[data$id]+rnorm(n)*0.1
fitted<-lmer(b~(1|id),data=data,verbose=T)
fitted
Run Code Online (Sandbox Code Playgroud)
我理解lmer拟合形式为Y_ {ij} = beta + B_i + epsilon_ {ij}的模型,其中epsilon_ {ij}和B_i分别是具有方差sigma ^ 2和tau ^ 2的独立法线.如果theta = tau/sigma是固定的,我用正确的均值和最小方差计算β的估计值
c = sum_{i,j} alpha_i y_{ij}
Run Code Online (Sandbox Code Playgroud)
哪里
alpha_i = lambda/(1 + theta^2 n_i)
lambda = 1/[\sum_i n_i/(1+theta^2 n_i)]
n_i = number of observations from group i
Run Code Online (Sandbox Code Playgroud)
我还计算了sigma ^ 2的以下无偏估计:
s ^ 2 =\sum_ {i,j} alpha_i(y_ {ij} - c)^ 2 /(1 + theta ^ 2 - lambda)
这些估计似乎与lmer产生的一致.但是,我无法弄清楚在这种情况下如何定义对数似然.我计算了概率密度
pd(Y_{ij}=y_{ij}) = …Run Code Online (Sandbox Code Playgroud) 我正在运行并行计算,用于foreach同时处理大量时间序列。在这些计算中(在一个名为我的函数中,compute_slope()我做了这样的事情
lBd <- floor(TMax^delta) # lower bound\nuBd <- ceiling(m * TMax^delta) # upper bound\n \n# process is a tibble with columns `n` and `variance`\nprocess %>% \n dplyr::filter(between(n, lBd, uBd)) %>% \n lm(data = ., log(variance) ~ log(n)) %>% \n coefficients() %>% \n .[2]\nRun Code Online (Sandbox Code Playgroud)\n所以,这是非常简单的事情:使用参数TMax, delta我m在左侧和右侧截断时间序列(使用filter()),然后对截断的时间序列运行线性回归。\n出于某种奇怪的原因,大多数时候一切都很顺利,但有时(我怀疑在较长的时间序列中更有可能发生错误,即TMax较大,但这也有点不规则)我得到
\xe2\x9c\x96 Problem with `filter()` input `..1`.\n\xe2\x84\xb9 Input `..1` is `between(n, lBd, uBd)`.\n\xe2\x9c\x96 `ancestor` must be an environment"\nRun Code Online (Sandbox Code Playgroud)\n我真的不知道如何解释这个错误。我也很难复制这个“祖先”错误,但到目前为止还没有运气。例如,我尝试过 …
我想找到用于在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文件一起提供)
基于文档,predict是一个多态函数,R实际调用的是另一个函数,具体取决于作为第一个参数传递的内容.
但是,文档不提供有关predict实际调用任何特定类的函数名称的任何信息.
通常,可以键入函数的名称来获取其源,但这不起作用predict.
如果我想predict在类型的对象上调用函数的源代码时glmnet,最简单的方法是什么?
表面上,points应在现有R图上添加点,而lines应添加线。但是阅读文档并进行实验告诉我,您可以将任何一个绘图type选项与任何一个一起使用。结果,您可以使用lines和轻松添加点points。
除了默认值,这两个命令之间实际上是否存在差异type?