作为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新用户说" 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)
好到目前为止,但看看lapply或vapply实际上揭示了一个完全不同的图片:
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编写的函数.
此外,让我们以 …
由于我是R的新手,我不知道S3方法和对象是什么.我发现有S3和S4对象系统,如果可能的话,有些人建议使用S3而不是S4(http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html).但是,我不知道S3方法/对象的确切定义.
这些都没有显示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如何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 …我已经看到lapplyR中使用的函数从矩阵列表中的矩阵中提取元素.
例如,我有一个3(2x2)矩阵的列表,我想从这3个矩阵中的每一个中提取元素[1,2].
代码:list1 = lapply(mylist, '[', 1,2)工作正常.它返回包含这3个元素的列表.
我正在努力研究这是做什么的.谷歌没有帮助和使用?'['R的帮助不是太解释.我不知道'['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包时,它是否也下载了源代码?它存放在计算机上的哪个位置?有人知道吗?
有关如何查看函数源代码的权威指南,但是如何调试未从包中导出的函数,而无需手动单步执行您找到的源代码?
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) 我可以使用lm或class::knn查看源代码,但我没有显示princomp的代码.是用R还是用其他字节码写的这个函数(或其他东西).我也找不到使用建议的源代码如何在包中显示S4函数的源代码?.谢谢你的帮助.
> princomp
function (x, ...)
UseMethod("princomp")
<bytecode: 0x9490010>
<environment: namespace:stats>
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,我想了解摘要如何生成它的信息.具体而言,汇总如何生成因子的每个级别中的元素数量的计数.我可以使用摘要,但我想学习如何更好地处理因素.当我尝试?摘要时,我只是得到一般信息.这是不可能的,因为它是字节码?
r ×10
r-faq ×2
apply ×1
c ×1
debugging ×1
internals ×1
k-means ×1
loops ×1
oop ×1
open-source ×1
performance ×1
r-s3 ×1
r-s4 ×1
statistics ×1
syntax ×1