r - prcomp "colMeans(x, na.rm = TRUE) 中的错误:'x' 必须是数字"
问题描述
我是 R 的新手,目前正在尝试为项目创建 PCA 图。我在 excel 中创建了数据表,然后将其保存为 .csv 文件,我将其声明为变量,如下所示:
> har.lip <-read.csv("HData.csv", header=TRUE, sep=",")
> head(har.lip[, 1:3])
NAME NUM1 NUM80
1 IN-3 4.347214 8.247082
2 IN-4 3.666815 8.108210
3 IN-5 5.779208 12.329948
4 IN-7 6.205594 22.449827
5 IN-7 5.342581 10.762976
6 IN-3 4.538335 9.711204
> pca <- prcomp(har.lip)
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
我已经尝试在此处根据自己的情况调整其他解决方案,但似乎没有用。我一直在学习教程,但我可以使用一些额外的帮助。谢谢!
解决方案
根据您的数据框,第一列似乎是一个字符串。prcomp
不容忍字符串。你可以做的事情是:
har.lip <-read.csv("HData.csv", header=TRUE, sep=",")
# Coerce to matrix, remove the first column which has characters
har.lip_mat <- as.matrix(har.lip[ ,-1])
# run function on the matrix
pca <- prcomp(har.lip_mat)
这应该会给你想要的输出。
为了说明您的一些其他问题,这里有一个更扩展的代表:
library(dplyr)
# Make a data set that looks like yours
sim_data <- mtcars %>%
tibble::rownames_to_column(var = "id")
# Make your data set a matrix and remove non-numeric columns
sim_data_mat <- as.matrix(sim_data[ ,-1])
# Add row names to your matrix from original data ste
rownames(sim_data_mat) <- sim_data[ ,1]
# Keep complete cases only
sim_data_mat <- sim_data_mat[complete.cases(sim_data_mat),]
# Now run your
prcomp(sim_data_mat)
``
推荐阅读
- javascript - 更改自定义主题 Material-UI
- java - 在 Firebase 数据库中的 Imageview 中显示存储在 Firebase 存储中的图像
- xamarin - 如何在 iOS 和 Xamarin 中更改导航栏 < 和单词的颜色?
- angular - 在任何其他组件/服务初始化之前调用 Angular4 中的某个函数?
- jquery - 没有“访问控制允许来源”cors 问题
- python - 为什么python抓取结果与浏览器中的不同
- performance - 根据可用内存限制 HTTP 请求
- python - Selenium,下载动态验证码,Python
- phpmailer - 带有 phpmailer 的 gsuite 邮件
- vim - Vim Cmake 集成