我可以使用lm
或class::knn
查看源代码,但我没有显示princomp的代码。这个函数(或其他东西)是用R或其他字节码编写的吗。我也无法使用“如何在包中显示S4函数的源代码?”中的“建议”找到源代码?。谢谢你的帮助。
> princomp
function (x, ...)
UseMethod("princomp")
<bytecode: 0x9490010>
<environment: namespace:stats>
> stats:::princomp.default
我在下面找到它:在R中查看源代码
您必须使用函数使用的相应方法进行询问。试试这个:
princomp # this is what you did without having a good enough answer
methods(princomp) # Next step, ask for the method: 'princomp.default'
getAnywhere('princomp.default') # this will show you the code
你要找的代码是:
function (x, cor = FALSE, scores = TRUE, covmat = NULL, subset = rep(TRUE,
nrow(as.matrix(x))), ...)
{
cl <- match.call()
cl[[1L]] <- as.name("princomp")
if (!missing(x) && !missing(covmat))
warning("both 'x' and 'covmat' were supplied: 'x' will be ignored")
z <- if (!missing(x))
as.matrix(x)[subset, , drop = FALSE]
if (is.list(covmat)) {
if (any(is.na(match(c("cov", "n.obs"), names(covmat)))))
stop("'covmat' is not a valid covariance list")
cv <- covmat$cov
n.obs <- covmat$n.obs
cen <- covmat$center
}
else if (is.matrix(covmat)) {
cv <- covmat
n.obs <- NA
cen <- NULL
}
else if (is.null(covmat)) {
dn <- dim(z)
if (dn[1L] < dn[2L])
stop("'princomp' can only be used with more units than variables")
covmat <- cov.wt(z)
n.obs <- covmat$n.obs
cv <- covmat$cov * (1 - 1/n.obs)
cen <- covmat$center
}
else stop("'covmat' is of unknown type")
if (!is.numeric(cv))
stop("PCA applies only to numerical variables")
if (cor) {
sds <- sqrt(diag(cv))
if (any(sds == 0))
stop("cannot use cor=TRUE with a constant variable")
cv <- cv/(sds %o% sds)
}
edc <- eigen(cv, symmetric = TRUE)
ev <- edc$values
if (any(neg <- ev < 0)) {
if (any(ev[neg] < -9 * .Machine$double.eps * ev[1L]))
stop("covariance matrix is not non-negative definite")
else ev[neg] <- 0
}
cn <- paste("Comp.", 1L:ncol(cv), sep = "")
names(ev) <- cn
dimnames(edc$vectors) <- if (missing(x))
list(dimnames(cv)[[2L]], cn)
else list(dimnames(x)[[2L]], cn)
sdev <- sqrt(ev)
sc <- if (cor)
sds
else rep(1, ncol(cv))
names(sc) <- colnames(cv)
scr <- if (scores && !missing(x) && !is.null(cen))
scale(z, center = cen, scale = sc) %*% edc$vectors
if (is.null(cen))
cen <- rep(NA_real_, nrow(cv))
edc <- list(sdev = sdev, loadings = structure(edc$vectors,
class = "loadings"), center = cen, scale = sc, n.obs = n.obs,
scores = scr, call = cl)
class(edc) <- "princomp"
edc
}
<environment: namespace:stats>
我想这就是你想要的。
我在R中查看cov的source_code,遇到了一段我不太理解的代码。 协方差的数学定义在这里。
在对象浏览器中,右键单击stats包中的,然后单击“编辑”显示: 我想知道源代码,因为命令有时生成值“v=...”,有时生成“w=...”。的帮助文件没有解释什么是V和W。任何帮助都将非常感谢。 我想要一个不需要从CRAN或其他地方下载R源代码的解决方案;也就是说,我想要一个GUI内的解决方案(特别是Revo R Ent)。
我试图在一个项目上执行一些PHP代码(使用Dreamweaver),但代码没有运行。 当我检查源代码时,PHP代码显示为HTML标记(我可以在源代码中看到)。Apache运行正常(我正在使用XAMPP),PHP页面打开正常,但PHP代码没有执行。 有人对正在发生的事情有什么建议吗? 编辑:代码..:
我希望这将是一个有用的页面,开始运行php代码,并解决当前的问题,我有一些非常简单的代码如下: 这被上传到一个运行apache的ec2网站上。代码不会被解释,当您查看页面的源代码时,它会显示php代码。 你可以看到这一页。 有什么想法吗?php代码非常基本,我认为它可能与apache配置有关。请让我知道你需要的任何额外信息,我会提供它,希望告诉我如何得到它。
我打开了开发人员控制台,查看了脚本,看看发生了什么,我看到它显示了所有内容,我的数据库名称,我正在访问的集合等等。 就像我说的,我是新来的,所以也许我错过了什么。
我想知道源代码,因为有时命令生成值“v=...”,有时生成值“w=...”。的帮助文件没有解释什么是V和W。 我想要一个解决方案,不需要从CRAN或其他地方下载R源代码;也就是说,我想要一个GUI内的解决方案(尤其是Revo R Ent)。