【发布时间】:2020-12-19 03:50:49
【问题描述】:
我正在尝试进行聚类分析,这需要我扩展/标准化我的数据。数据在矩阵中并且是数字,但是我只收到以下消息:
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
最初,有一列包含分类数据,所以我删除了它,认为这样可以解决问题,但我仍然收到错误。
以下是脚本块和 6 行数据。任何帮助将不胜感激。
Metals <- as.matrix(d)
rownames(Metals)<-d$RowLabs
cols_to_keep <-c(FALSE,TRUE,TRUE,TRUE,TRUE,TRUE)
Metals<-Metals[,cols_to_keep]
head(Metals)
X88Sr_umol_molCa X25Mg_umol_molCa X55Mn_umol_molCa X7Li_umol_molCa
CHR1 "1748.3722" " 80.284613" " 1.353754e-01" " 3.2146056"
CLR2 "1763.6984" " 104.850260" " 4.944963e-01" " 0.2649073"
CLR3 "2245.8861" " 186.579911" " 2.124642e-01" " 1.0715352"
CLR4 "1654.9811" " 124.502777" " 4.756491e-01" " 0.2252010"
CLR5 "1447.3079" " 183.703436" " 4.734605e-01" " 2.8409970"
CLR6 "1731.3718" " 170.511088" " 1.728970e-01" " 2.5984728"
X138Ba_umol_molCa
CHR1 " 1.3426978"
CLR2 "10.3955650"
CLR3 "12.8552971"
CLR4 "12.3339241"
CLR5 " 0.9453284"
CLR6 " 2.1714244"
d <- scale(Metals)
head(Metals)
colMeans(x, na.rm = TRUE) 中的错误:“x”必须是数字
【问题讨论】:
-
嘿安吉拉!从您提供的 6 行数据来看,您的数字似乎被 R 解释为字符(因为它们位于引号 - “”之间)。也许这就是出现错误的原因。您可以通过应用 as.double() 函数来转换这些数字。
-
除此之外。下次您寻求帮助时,请在您的“d”对象上使用 dput() 函数,以提供重现数据的正确方法。您提供的 6 行数据,对我们解决您的问题没有多大帮助。
-
感谢您的帮助佩德罗。我不确定为什么它们用引号引起来。如何删除它们?
-
我只是编辑了过去的评论。您可以在您的“d”对象上使用 as.double() 函数,这可能有效。
-
感谢您也让我了解 dput() 函数。这看起来如何?你能告诉我我提供的代码吗?
标签: r cluster-analysis