相关疑难解决方法(0)

unique()是否保留顺序?

想象一下,我们正在使用以下代码:

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

11
推荐指数
1
解决办法
2111
查看次数

R源代码.Call函数

我正在查看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等协方差的源代码.

谢谢.

r

10
推荐指数
1
解决办法
2439
查看次数

如何找到.External2()调用的代码?

我想学习如何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

r

10
推荐指数
1
解决办法
1329
查看次数

当`methods`失败时,如何判断函数调用正在使用什么方法?

不妨让猫从袋子里拿出来,并说当我呼唤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)

oop methods r r-maptools

10
推荐指数
2
解决办法
777
查看次数

如何检查R中对象类敏感的函数的代码

我正在尝试编写一个函数来完成一项特定的工作(在我的例子中,分析异常值的数据集),所以我想要做的第一件事就是看看其他人是如何完成类似的工作的.

我可以这样做来加载一个特定的包并检查一个函数的代码,但是一些函数似乎依赖于你抛出的对象类

>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 < - 面子.我作为一个例子使用的函数只调用它自己,但是他的代码就在那里......我已经看到了其他的例子(但是不能想到任何随便的)函数确实做了其他事情,这取决于抛出的对象的类在它,所以问题,即使这是一个坏的例子!

r function

9
推荐指数
2
解决办法
1万
查看次数

lmer(来自R包lme4)如何计算对数似然?

我正在努力理解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)

r random-effects lmer

9
推荐指数
1
解决办法
2363
查看次数

是什么触发了“祖先必须是环境”错误?

我正在运行并行计算,用于foreach同时处理大量时间序列。在这些计算中(在一个名为我的函数中,compute_slope()我做了这样的事情

\n
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]\n
Run Code Online (Sandbox Code Playgroud)\n

所以,这是非常简单的事情:使用参数TMaxdeltam在左侧和右侧截断时间序列(使用filter()),然后对截断的时间序列运行线性回归。\n出于某种奇怪的原因,大多数时候一切都很顺利,但有时(我怀疑在较长的时间序列中更有可能发生错误,即TMax较大,但这也有点不规则)我得到

\n
\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"\n
Run Code Online (Sandbox Code Playgroud)\n

我真的不知道如何解释这个错误。我也很难复制这个“祖先”错误,但到目前为止还没有运气。例如,我尝试过 …

r dplyr doparallel

6
推荐指数
1
解决办法
435
查看次数

PC上的.R脚本文件在哪里?

我想找到用于在R中计算的脚本.R文件的位置.

我知道通过键入对象函数,我将获得正在运行的代码,然后我可以复制和编辑并将其保存为新的脚本文件并使用它.

要求查找foo.R文件的原因是

  1. 好奇心
  2. 知道数值计算中使用的算法是什么
  3. 更直接的是,我正在使用的stats包中的函数正在运行两个参数的结果而不是其他参数,并且必须弄清楚如何使其工作.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文件一起提供)

r

5
推荐指数
4
解决办法
6719
查看次数

如何查看特定`predict`函数的源代码?

基于文档,predict是一个多态函数,R实际调用的是另一个函数,具体取决于作为第一个参数传递的内容.

但是,文档不提供有关predict实际调用任何特定类的函数名称的任何信息.

通常,可以键入函数的名称来获取其源,但这不起作用predict.

如果我想predict在类型的对象上调用函数的源代码时glmnet,最简单的方法是什么?

r

5
推荐指数
2
解决办法
3370
查看次数

点和线之间的差异

表面上,points应在现有R图上添加点,而lines应添加线。但是阅读文档并进行实验告诉我,您可以将任何一个绘图type选项与任何一个一起使用。结果,您可以使用lines和轻松添加点points

除了默认值,这两个命令之间实际上是否存在差异type

plot r

5
推荐指数
1
解决办法
51
查看次数

标签 统计

r ×10

doparallel ×1

dplyr ×1

function ×1

lmer ×1

methods ×1

oop ×1

plot ×1

r-maptools ×1

random-effects ×1