相关疑难解决方法(0)

R中的聚类分析:确定最佳聚类数

作为R的新手,我不太确定如何选择最佳数量的聚类来进行k均值分析.绘制下面数据的子集后,适合多少个群集?如何进行聚类dendro分析?

n = 1000
kk = 10    
x1 = runif(kk)
y1 = runif(kk)
z1 = runif(kk)    
x4 = sample(x1,length(x1))
y4 = sample(y1,length(y1)) 
randObs <- function()
{
  ix = sample( 1:length(x4), 1 )
  iy = sample( 1:length(y4), 1 )
  rx = rnorm( 1, x4[ix], runif(1)/8 )
  ry = rnorm( 1, y4[ix], runif(1)/8 )
  return( c(rx,ry) )
}  
x = c()
y = c()
for ( k in 1:n )
{
  rPair  =  randObs()
  x  =  c( x, rPair[1] )
  y  = …
Run Code Online (Sandbox Code Playgroud)

r cluster-analysis k-means

422
推荐指数
6
解决办法
24万
查看次数

"*apply"系列真的没有矢量化吗?

因此,我们习惯于对每个R新用户说" apply没有矢量化,请查看Patrick Burns R Inferno Circle 4 ",其中说(我引用):

常见的反射是使用apply系列中的函数.这不是 矢量化,而是循环隐藏.apply函数在其定义中有一个for循环.lapply函数掩盖了循环,但执行时间往往大致等于显式for循环.

实际上,快速查看apply源代码会显示循环:

grep("for", capture.output(getAnywhere("apply")), value = TRUE)
## [1] "        for (i in 1L:d2) {"  "    else for (i in 1L:d2) {"
Run Code Online (Sandbox Code Playgroud)

好到目前为止,但看看lapplyvapply实际上揭示了一个完全不同的图片:

lapply
## function (X, FUN, ...) 
## {
##     FUN <- match.fun(FUN)
##     if (!is.vector(X) || is.object(X)) 
##        X <- as.list(X)
##     .Internal(lapply(X, FUN))
## }
## <bytecode: 0x000000000284b618>
## <environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)

所以显然没有R for环隐藏在那里,而是他们调用内部C编写的函数.

兔子 洞的快速浏览显示了几乎相同的图片

此外,让我们以 …

performance loops r vectorization apply

132
推荐指数
4
解决办法
7851
查看次数

"S3方法"在R中意味着什么?

由于我是R的新手,我不知道S3方法和对象是什么.我发现有S3和S4对象系统,如果可能的话,有些人建议使用S3而不是S4(http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html).但是,我不知道S3方法/对象的确切定义.

oop r r-s3 r-s4 r-faq

115
推荐指数
6
解决办法
4万
查看次数

如何查看R .Internal或.Primitive函数的源代码?

这些都没有显示pnorm功能的源代码,

stats:::pnorm
getAnywhere(pnorm)  
Run Code Online (Sandbox Code Playgroud)

我怎么能看到源代码pnorm

sum
 (..., na.rm = FALSE)  .Primitive("sum")
.Primitive("sum")
function (..., na.rm = FALSE)  .Primitive("sum")
methods(sum)
no methods were found
Run Code Online (Sandbox Code Playgroud)

而且,我怎样才能看到该sum函数的源代码?

r

77
推荐指数
3
解决办法
2万
查看次数

了解如何在R中处理.Internal C函数

我想知道是否有人可以向我说明R如何C从控制台提示符下键入的R命令执行调用.我R对a)函数参数的处理和b)函数调用本身特别困惑.

在这种情况下,我们举一个例子set.seed().想知道它是如何工作我在提示符下键入名称,获得源(看看这里的更多介绍),看到有最后一个.Internal(set.seed(seed, i.knd, normal.kind),所以尽职尽责地在查找相关的函数名.Internals的部分/src/names.c,发现它被称为do_setseed是在RNG.c哪导致我......

SEXP attribute_hidden do_setseed (SEXP call, SEXP op, SEXP args, SEXP env)
{
    SEXP skind, nkind;
    int seed;

    checkArity(op, args);
    if(!isNull(CAR(args))) {
    seed = asInteger(CAR(args));
    if (seed == NA_INTEGER)
        error(_("supplied seed is not a valid integer"));
    } else seed = TimeToSeed();
    skind = CADR(args);
    nkind = CADDR(args);
    //...
      //DO RNG here 
    //...
    return R_NilValue;
}
Run Code Online (Sandbox Code Playgroud)
  • 什么是CAR,CADR …

c syntax r internals

39
推荐指数
2
解决办法
1437
查看次数

使用'['方括号作为R中lapply的函数

我已经看到lapplyR中使用的函数从矩阵列表中的矩阵中提取元素.

例如,我有一个3(2x2)矩阵的列表,我想从这3个矩阵中的每一个中提取元素[1,2].

代码:list1 = lapply(mylist, '[', 1,2)工作正常.它返回包含这3个元素的列表.

我正在努力研究这是做什么的.谷歌没有帮助和使用?'['R的帮助不是太解释.我不知道'['R中的函数是怎么样的,所以代码不直观.

r

29
推荐指数
2
解决办法
9733
查看次数

查看R中的源代码

如何在R中查看源代码?例如,对于功能portfolio.optim

> require(tseries)
> portfolio.optim
function (x, ...) 
UseMethod("portfolio.optim")
<environment: namespace:tseries>

> methods(portfolio.optim)
[1] portfolio.optim.default* portfolio.optim.ts*     

Non-visible functions are asterisked
> portfolio.optim.ts
Error: object 'portfolio.optim.ts' not found
> portfolio.optim.default
Error: object 'portfolio.optim.default' not found
Run Code Online (Sandbox Code Playgroud)

当我在本地安装R包时,它是否也下载了源代码?它存放在计算机上的哪个位置?有人知道吗?

r

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

如何调试非导出函数?

有关如何查看函数源代码的权威指南,但是如何调试未从包中导出的函数,而无需手动单步执行您找到的源代码?

library(plm)
> predict.plm
Error: object 'predict.plm' not found
> plm:::predict.plm
function (object, newdata = NULL, ...) 
{
    tt <- terms(object)
    if (is.null(newdata)) {
        result <- fitted(object, ...)
    }
    else {
        Terms <- delete.response(tt)
        m <- model.frame(Terms, newdata)
        X <- model.matrix(Terms, m)
        beta <- coef(object)
        result <- as.numeric(crossprod(beta, t(X)))
    }
    result
}
<environment: namespace:plm>
> debugonce("predict.plm")
Error in debugonce("predict.plm") : could not find function "predict.plm"
> debugonce("plm:::predict.plm")
Error in debugonce("plm:::predict.plm") : 
  could not find function "plm:::predict.plm"
Run Code Online (Sandbox Code Playgroud)

debugging r

21
推荐指数
2
解决办法
695
查看次数

显示R中函数的源代码

我可以使用lmclass::knn查看源代码,但我没有显示princomp的代码.是用R还是用其他字节码写的这个函数(或其他东西).我也找不到使用建议的源代码如何在包中显示S4函数的源代码?.谢谢你的帮助.

> princomp
function (x, ...) 
UseMethod("princomp")
<bytecode: 0x9490010>
<environment: namespace:stats>
Run Code Online (Sandbox Code Playgroud)

statistics open-source r machine-learning

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

如何读取数据框的summary()代码?

我有一个数据框,我想了解摘要如何生成它的信息.具体而言,汇总如何生成因子的每个级别中的元素数量的计数.我可以使用摘要,但我想学习如何更好地处理因素.当我尝试?摘要时,我只是得到一般信息.这是不可能的,因为它是字节码?

r r-faq

13
推荐指数
1
解决办法
3579
查看次数