![](/img/trans.png)
[英]prcomp, Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric, when my data is numeric?
[英]prcomp “Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric”
我是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)
``
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.