x^2 用于将向量提升到二次方的运算符不起作用

问题描述 投票:0回答:2

我正在尝试使用以下代码为数据的 PCA 绘制一个屏幕:

library(ade4)
data("olympic")
pca.olympic <- princomp(olympic$tab)
plot(1:10, pca.olympic$sdevˆ2, type="b", xlab="# PCs", ylab="Variance of PC",
     main="PCA of Covariance Matrix")

当我运行这段代码时,我得到以下输出:

当我应该看到这样的东西时:

有人可以解释如何解决这个问题吗?

r plot pca
2个回答
3
投票

^
运算符替换为
**
运算符以提高特征值的 2 次方:

library(ade4)

data("olympic")
pca.olympic <- princomp(olympic$tab)
plot(1:10, pca.olympic$sdev ** 2, type="b", xlab="# PCs", ylab="Variance of PC",
     main="PCA of Covariance Matrix")


0
投票

你的权力符号

ˆ
不正确。 我不确定你是怎么输入的,但复制并使用这个:
^
代替。请注意,它在视觉上有所不同 - 不同的符号。

当您使用代码中的那个时,R 会默默地返回

NULL

pca.olympic$sdevˆ2
NULL

这是因为您键入的

ˆ
被视为另一个字符,而不是运算符,就像
š
这样的字符一样。结果,表达式
pca.olympic$sdevˆ2
不是将名为
sdev
的元素提升为 2 的幂,而是寻找名为
sdevˆ2
的变量。由于这样的变量不存在 - 它返回 NULL。

现在,当

y
为 null 时,仅使用在两个轴上绘制的
x
(
1:10
) 变量生成图。 你得到一条对角线。

© www.soinside.com 2019 - 2024. All rights reserved.