首页 > 解决方案 > colMeans(x, na.rm = TRUE) 中的错误:“x”必须是数字

问题描述

我正在尝试进行聚类分析,这需要我缩放/标准化我的数据。数据在矩阵中并且是数字的,但是我只收到以下消息:

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”必须是数字

标签: rcluster-analysis

解决方案


您的数据似乎是字符。返回什么class(Metals)

将数据转换为数字,然后尝试该scale功能:

Metals[] <- as.numeric(Metals)
d <- scale(Metals)

推荐阅读